#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 测试:1.125秒;printf 测试:0.195秒
- std::cout 测试:1.154秒;printf 测试:0.230秒
- std::cout 测试:1.142秒;printf 测试:0.216秒
- std::cout 测试:1.322秒;printf 测试:0.221秒
- std::cout 测试:1.108秒;printf 测试:0.232秒
如您所见,使用printf
然后fflush
ing 比使用 ing 花费的时间大约少 5 倍std::cout
。
尽管我确实希望使用std::cout
's<<
运算符可能会慢一些(几乎是最小的),但我并没有为这种巨大的差异做好准备。我在做一个公平的测试吗?如果是这样,那么是什么让第一个测试比第二个测试慢得多,如果他们基本上做同样的事情?