C++を扱っています。
そこでstd::endlと\nに着目しました。
std::endlは改行+バッファをフラッシュする。
\nは改行の違いがあるようです。
そこでこの二つの実行速度を比べてみることにしました。
以下のコードです。
C++
1#include <iostream> 2#include <vector> 3#include <windows.h> 4#include <time.h> 5 6int main(){ 7 int i; 8 int j=0; 9 10/*\nの実行速度*/ 11 clock_t start = clock(); 12 13 for(i=0; i<10000; ++i){ 14 std::cout << "count = " << j << "\n"; 15 ++j; 16 } 17 clock_t end = clock(); 18/*\nの実行速度*/ 19/*std::endlの実行速度*/ 20 j = 0; 21 clock_t startstd = clock(); 22 23 for(i=0; i<10000; ++i){ 24 std::cout << "count = " << j << std::endl; 25 ++j; 26 } 27 clock_t endstd = clock(); 28/*std::endlの実行速度*/ 29 30 std::cout << "\nの場合" << (double)(end -start)/ CLOCKS_PER_SEC; 31 std::cout << "std::endlの場合" << (double)(endstd -startstd)/ CLOCKS_PER_SEC; 32}
実行した結果
\nの場合は 7.463s
std::endlの場合は3.207s
このような違いが生まれました。
stdの方がフラッシュの操作があるため実行速度が増えると考えていました。
この二つの差はなぜ生まれるのでしょうか。
回答2件
あなたの回答
tips
プレビュー