Was ist die schnellste Funktion zum Drucken von Text im Terminal in C++? [Duplikat]
Posted: 18 Jan 2025, 23:07
Ich habe kürzlich eine konsolenbasierte Anwendung erstellt, die einen rotierenden Würfel in 3D anzeigt. Um diese Anwendung zu erstellen, musste ich ziemlich schnell Text auf der Konsole ausgeben. Ich habe mich gefragt, ob es eine schnellere Methode zum Drucken von Text auf einer Konsole gibt, die ich nicht kannte. Als ich das ursprünglich recherchierte, stieß ich auf einige Methoden, mit denen ich die Leistung der Verwendung des Very Sleepy-Profilers aufzeichnete, wie Pepijn Kramer vorgeschlagen hat.
printf:
Zeit: 192,2s
cout:
printf:
Code: Select all
#include
#include
int main() {
int i;
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO screen;
GetConsoleScreenBufferInfo(console, &screen);
short columns = screen.srWindow.Right - screen.srWindow.Left + 1;
short rows = screen.srWindow.Bottom - screen.srWindow.Top + 1;
char characters[columns * rows + 1];
for (i = 0; i < columns * rows; i++) {
characters[i] = '.';
}
characters[columns * rows] = '\0';
for (i = 0; i < 5000; i++) {
printf(characters);
SetConsoleCursorPosition(console, (COORD){0, 0});
}
return 0;
}
cout:
Code: Select all
#include
#include
int main() {
int i;
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO screen;
GetConsoleScreenBufferInfo(console, &screen);
short columns = screen.srWindow.Right - screen.srWindow.Left + 1;
short rows = screen.srWindow.Bottom - screen.srWindow.Top + 1;
char characters[columns * rows + 1];
for (i = 0; i < columns * rows; i++) {
characters[i] = '.';
}
characters[columns * rows] = '\0';
for (i = 0; i < 5000; i++) {
std::cout