#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <ctime>
int main(int argc, char* argv[])
{
std::clock_t start;
double duration;
std::cout << "Starting std::cout test." << std::endl;
start = std::clock();
for (int i = 0; i < 1000; i++)
{
std::cout << "Hello, World! (" << i << ")" << std::endl;
}
duration = (std::clock() - start) / (double) CLOCKS_PER_SEC;
std::cout << "Ending std::cout test." << std::endl;
std::cout << "Time taken: " << duration << std::endl;
std::system("pause");
std::cout << "Starting std::printf test." << std::endl;
start = std::clock();
for (int i = 0; i < 1000; i++)
{
std::printf("Hello, World! (%i)\n", i);
std::fflush(stdout);
}
duration = (std::clock() - start) / (double) CLOCKS_PER_SEC;
std::cout << "Ending std::printf test." << std::endl;
std::cout << "Time taken: " << duration << std::endl;
system("pause");
return 0;
}
Теперь, вот время для первых пяти запусков:
- std:: cout test: 1.125; printf test: 0.195 s
- std:: cout test: 1.154; printf test: 0.230 s
- std:: cout test: 1.142; printf test: 0.216 s
- std:: cout test: 1.322; printf test: 0.221 s
- std:: cout test: 1.108; printf test: 0.232 s
Как вы можете видеть, использование printf
, а затем fflush
ing занимает примерно в 5 раз меньше времени, чем при использовании std::cout
.
Хотя я ожидал, что с помощью оператора std::cout
<<
был бы, возможно, немного медленнее (почти минимальный), я не был готов к этой огромной разнице. Я делаю честный тест? Если да, то что делает первый тест намного медленнее второго, если они по сути делают то же самое?