Ich experimentierte mit C++ und versuchte herauszufinden, wie ich die Zahlen von 0 bis n so schnell wie möglich drucken könnte.Wie kann ich einen Zeilenumbruch drucken, ohne den Puffer zu leeren?
Zuerst habe ich gerade gedruckt alle Zahlen mit einer Schleife:
for (int i = 0; i < n; i++)
{
std::cout << i << std::endl;
}
aber ich denke, das den Puffer nach jeder einzelnen Zahl spült, dass es gibt, und sicher, dass muss einige Zeit dauern, also versuchte ich um zuerst alle Zahlen in den Puffer zu drucken (oder tatsächlich, bis es voll ist, scheint es dann automatisch zu spülen) und dann alles auf einmal zu spülen. es scheint jedoch, dass ein \ n Druck nach Wallungen der Puffer wie die std :: endl so ausgelassen ich es:
for (int i = 0; i < n; i++)
{
std::cout << i << ' ';
}
std::cout << std::endl;
Dies scheint etwa 10-mal schneller als das erste Beispiel auszuführen. Allerdings möchte ich wissen, wie in dem Puffer alle Werte speichern und es auf einmal nicht bündig als lassen es jedes Mal, spülen Sie es voll ist, so habe ich ein paar Fragen:
- Ist es möglich, eine neue Zeile drucken ohne den Puffer zu spülen?
- Wie kann ich die Puffergröße ändern, so dass ich alle Werte darin speichern und am Ende leeren kann?
- Ist diese Methode der Ausgabe von Text dumm? Wenn ja, warum und was wäre eine bessere Alternative?
EDIT: Es scheint, dass meine Ergebnisse durch ein laggy System (Terminal App von einem Smartphone) ... Mit einem schnelleren System der Ausführungszeiten keinen signifikanten Unterschied zeigen voreingenommen waren.
Versuchen Sie, [unitbuf] (http://en.cppreference.com/w/cpp/io/manip/unitbuf) auf "cout" zu deaktivieren, bevor Sie schreiben. –
Verwenden Sie nicht 'endl', da es zum Spülen usw. führt. Verwenden Sie stattdessen' '\ n'' oder '\ n" '? Oder Sie können in komplizierteren Tricks den Puffermodus von 'std :: cout' auf voll gepuffert setzen. –
'std :: cout << '\ n' 'druckt eine neue Zeile. Spülen Sie nicht manuell, es sei denn, Sie haben einen Grund dazu. – nwp