Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Böse Zungen behaupten...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.07.2003, 19:37 Uhr
~Marian
Gast


Ich habe gemerkt, dass meine Programm unerwartet langsam laufen.

Ein einfaches Beispiel: Ich habe eine for-Schleife, die von 1 bis 10000 zählt.
bei jedem Schleifendurchlauf soll das Programm den Wert der Laufvariable anzeigen. Also:


C++:
for(i = 1; i <= 10000; i++)
  printf("%i\n", i);



Die Ausgabe ändert sich in etwa 1000stel Schritten. Mit Delphi und anderen Programmiersprachen ging das immer schneller! Ich habe jetzt gehört, dass es einen Buffer im Compiler gibt, der die Bildschirmausgabe verlangsamt. Diese könne man irgendwo ausstellen. Näheres weiß ich leider auch nicht. Weiß jemand, wie ich meine Programme schneller bekomme? Gibt es diesen Buffer?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.08.2003, 12:25 Uhr
void*
Generic Pointer
(Operator)


Wo liegt die praktische Relevanz?
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.08.2003, 14:13 Uhr
0xdeadbeef
Gott
(Operator)


Wenn ich dich richtig verstehe, suchst du

C++:
fflush(stdout);


Im Compiler gibt es keinen Buffer (der Compiler hat ja mit der Laufzeit des Programms nichts zu tun), aber die Konsole hat normalerweise einen. Und das ist auch ganz gut so, sonst wäre sie nämlich schweinelahm. Allerdings ist der unabhängig von der Programmiersprache.
Wie dem auch sei, fflush(FILE*) flusht einen geöffneten Stream, fflush(stdout) führt also dazu, dass alles, was im Tastaturpuffer steht, auf die Konsole geschrieben wird.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.08.2003, 12:43 Uhr
Bruder Leif
dances with systems
(Operator)


Ich denke mal, die Verzögerung kommt von printf. In Delphi schreibst Du

C++:
writeln(i);


und der Compiler sucht sich die Version von writeln raus, die Integer-Werte ausgibt. Entsprechend schnell ist dann auch die Ausgabe. Wenn Du in C++ mit printf arbeitest, läuft intern wesentlich komplexeres ab, inklusive dem Parsen des Format-Strings ("%i\n") in JEDEM Schleifendurchlauf...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.08.2003, 11:19 Uhr
~peter67
Gast


Wer benutzt heute noch printf ??? Wenn man C++ und OOP ernst nimmt, sollte man zur Ausgabe auf die Konsole lieber Streams verwenden (also z. B. cout). Ob das allerdings schneller als printf ist, habe ich nie ausprobiert, da die Zeitscheibe eines Konsolenfenster ohnehin von Systemauslastung und Systemeinstellungen abhängig ist...

Gruß,
peter67
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: