Какая самая быстрая функция для вывода текста в терминал на C++? [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Какая самая быстрая функция для вывода текста в терминал на C++? [дубликат]

Сообщение Anonymous »

Недавно я создавал консольное приложение, отображающее вращающийся куб в 3D. Чтобы создать это приложение, мне нужно было довольно быстро вывести текст в консоль. Мне было интересно, есть ли какой-нибудь более быстрый метод печати текста на консоли, о котором я не знал. Когда я первоначально исследовал это, я наткнулся на несколько методов, с помощью которых я записал производительность с помощью профилировщика Very Sleepy, как предложил Пепейн Крамер.
printf:

Код: Выделить всё

#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;
}
Время: 192,2 с
печать:

Код: Выделить всё

#include 
#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::print("{}", std::string(characters));
SetConsoleCursorPosition(console, (COORD){0, 0});
}
return 0;
}
время: 0,2 с
cout:

Код: Выделить всё

#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 

Подробнее здесь: [url]https://stackoverflow.com/questions/79366555/what-is-the-fastest-function-to-print-text-into-the-terminal-in-c[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»