#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;
}
さて、これが最初の5回の実行の時間です。
- 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するのにかかる時間は、を使用する場合の約5分の1std::cout
です。
std::cout
の演算子を使用すると、おそらく少し遅くなる(ほとんど最小限になる)と予想してい<<
ましたが、この大きな違いに備えることはできませんでした。私は公正なテストを行っていますか?もしそうなら、彼らが本質的にまったく同じことをするのであれば、最初のテストが2番目のテストよりもはるかに遅くなるのはなぜですか?