Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
hocki
Anmeldungsdatum: 10.10.2007 Beiträge: 9 Wohnort: Hamburg
|
Verfasst am: 10.10.2007, 13:36 Titel: sehr langsamer PRINT-Befehl |
|
|
Hallo,
nach und nach will ich meine Programme von QB 4.5 auf FreeBasic umstellen, allerdings so, das ich sie möglichst mit beiden Compilern in 16- oder -32Bit ExEs umwandeln kann.
Dabei fällt mir auf, das der PRINT-Befehl unter FB quälend langsam abläuft. Dies hat zur Folge, das ein Programm mit einer komplexen Textmaske als FB-Programm den Bildschirm unattraktiv langsam aufbaut ! Als QB 4.5-Programm läuft es sehr flott.
Was ist da los? Gibt es einen Weg, den PRINT-Befehl (immerhin einer der häufigsten Befehle) zu beschleunigen ? Oder muss ich auf die nächste FB-Compilerversion warten ?
Schöne Grüße an die Gemeinde
Reiner |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 10.10.2007, 14:14 Titel: |
|
|
Musst du nicht, es würde reichen, wenn du uns mal ein bisschen Quellcode zeigst.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 10.10.2007, 15:22 Titel: |
|
|
(Es sei angemerkt, dass ein Print auf die Konsole immer sehr lange dauert. Selbst bei der StdLib von C++ konnte ich kaum einen Geschwindigkeitszuwachs unter Win feststellen.) _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 10.10.2007, 15:34 Titel: |
|
|
Naja, es wäre angebracht, wenn du das "lange" mal als relativ auffasst.
Warum sollte das Ganze mit C++ auch schneller gehen? Wenn du in C++ std::cout verwendest, greift das dann auch bloß intern wieder auf die Windows-APIs zu. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 10.10.2007, 16:02 Titel: |
|
|
Mao hat Folgendes geschrieben: | Wenn du in C++ std::cout verwendest, greift das dann auch bloß intern wieder auf die Windows-APIs zu. | Das stimmt so nicht. std::cout funzt auch ganz ohne Windows im reinen DOS, hat also nix mit WinAPI zu tun. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 10.10.2007, 17:48 Titel: |
|
|
Natürlich funzt das auch auf DOS. Genauso wie auf Linux, HP-UX, FreeBSD und auf nahezu jedem System mit verfügbarem C++-Compiler sowie angepasster Bibliotheken.
Da er aber konkret von alten QuickBasic 4.5-Programmen spricht und wohl die wenigsten QB unter anderen Systemen als DOS oder Windows einsetzen, hab ich meinen Kommentar eben auf Windows bezogen.
Es ist natürlich Sache der jeweiligen Lib, wie das ganze konkret implementiert ist, aber es wird immer auf System-APIs zurückgegriffen! _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
hocki
Anmeldungsdatum: 10.10.2007 Beiträge: 9 Wohnort: Hamburg
|
Verfasst am: 11.10.2007, 00:13 Titel: |
|
|
Ihr wollt Code ? Hier kommt ein Beispiel:
DEFDBL A-C
DEFINT I-M
CLS
ati1 = TIMER
FOR iMM = 1 TO 5
iX = 1
FOR iX = 1 TO 70 STEP 1
FOR iY = 1 TO 23
LOCATE iY, iX: PRINT STRING$(9, "#")
NEXT iY
NEXT iX
NEXT iMM
adiff = ati1 - TIMER
PRINT adiff
SLEEP (1000 * 10)
END
Compiliert mit QB4.5 braucht das kl. Programm ca. 0,15 Sek. zur Darstellung, mit FB ca. 60 Sek. !
p.s. Ich habe eine 550 Mhz-Maschine... aber der Unterschied bleibt doch !
Viele Grüße
Reiner |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 11.10.2007, 00:32 Titel: |
|
|
Dauerte noch nicht mal ne Sekunde hier... 1900 MHz.
Meine Vermutung: QBasic kann direkt BIOS-Funktionen zur Textausgabe benutzen. Es verwenden den "echten" Text-Screen. FB benutzt dagegen die Konsole, die eine Grafikanwendung ist, die eben durch die GDI (Die Windows-Grafikbilbiothek) gesteuert wird. Hast du z.B. alte oder falsche Graka-Treiber installiert, könnte sich das auf die Programmgeschwindigkeit auswirken.
btw...
Zitat: | (immerhin einer der häufigsten Befehle) |
das kommt ganz auf den user an Ich hab PRINT schon seit jahre nicht mehr benutzt... höchstens zu debug-zwecken, aber niemals in Programmen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
hocki
Anmeldungsdatum: 10.10.2007 Beiträge: 9 Wohnort: Hamburg
|
Verfasst am: 11.10.2007, 15:26 Titel: |
|
|
Hallo ihr,
Danke für eure Hinweise !
Kurzfristig hilfreich war Dein Tip, Sebastian, den SCREEN einzustellen. Führt wirklich zu viel höherer Performance, jetzt wirkt mein Programm nicht mehr steinzeitlich. Bischen lästig ist dann nur der Doppelrahmen.
Von Dir, Jojo, wüßte ich gern, wie Du PRINT oder PRINT USING (bin ich halt sehr gewohnt !) in einem einfachen, textbasierten Programm ersetzt.
Ich habe halt den Wunsch, zunächst mal zweigleisig zu compilieren, ohne das jew. Programm immer umfangreich umzuschreiben.
Schöne Grüße
Reiner |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 11.10.2007, 15:34 Titel: |
|
|
Meinst du mit "Doppelrahmen", dass ein Konsolen- und ein Grafikfenster geöffnet ist?
Dann compiliere das Programm mit "-s gui" als Switch. Wie das geht, findest du über die Boardsuche. (Ist auch schon bebildert beschrieben wurden.) _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 11.10.2007, 20:56 Titel: |
|
|
hocki hat Folgendes geschrieben: | Von Dir, Jojo, wüßte ich gern, wie Du PRINT oder PRINT USING (bin ich halt sehr gewohnt !) in einem einfachen, textbasierten Programm ersetzt. |
Ganz einfach: Ich programmiere in FB nur Spiele oder grafische Anwendungen, in denen das durch DRAW STRING ersetzt wird Wie gesagt, es hängt ganz vom zweck des Programms ab... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
hocki
Anmeldungsdatum: 10.10.2007 Beiträge: 9 Wohnort: Hamburg
|
Verfasst am: 12.10.2007, 19:23 Titel: |
|
|
alles klar !
...kein "Doppelrahmen" mehr mit -s gui ! Ich nutze übrigens den Jellyfish pro Editor, der kanns natürlich auch. Beim FBIDE vermisse ich die Druckfunktion.
Tschüss bis zur nächsten Frage,
schöne Grüße
Reiner |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 13.10.2007, 15:39 Titel: |
|
|
Das schnellste (von der Performance her) ist immernoch der Grafikpuffer..
Villeicht schreib ich mal irgendwann eine Lib dafür  _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.10.2007, 16:15 Titel: |
|
|
Wofür eine lib?! O_o
Für eine Anwendung à la
Code: |
screenlock
print "hi!"
screenunlock
|
???  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 13.10.2007, 16:25 Titel: |
|
|
Hast du AndT's tolle "QB-Emulation" auf fb-porticula noch nicht gesehen? _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 13.10.2007, 17:04 Titel: |
|
|
Gegen Screenlock spricht wirklich nichts
Zusmmen mit Draw String ist das sogar genauso schnell wie Puffer. _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.10.2007, 17:54 Titel: |
|
|
wow, mao, überaus komplex!
ich sag einfach gar nix mehr... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|