出於某種原因,我不能讓我的輸出流運行任何與線C++ IO流sync_with_stdio沒有區別
std::ios_base::sync_with_stdio(false);
包括在我的節目的開始更快。我用這兩個程序測試此:
#include <iostream>
int main() {
for (int i = 0; i < 500000; i++)
std::cout << "Hello World\n";
}
和
#include <iostream>
int main() {
std::ios_base::sync_with_stdio(false);
for (int i = 0; i < 500000; i++)
std::cout << "Hello World\n";
}
運行時間爲每個程序如下
first_test(同步)
real 0m1.095s
user 0m0.472s
sys 0m0.299s
second_test (同步關閉)
real 0m1.091s
user 0m0.471s
sys 0m0.299s
我在用g ++ -O3 main.cpp編譯。我在運行10.11.1的Mac上。
有什麼辦法讓sync_with_stdio關閉來讓輸出流更快地執行?
你重定向了輸出嗎?還是讓它打印到終端? –
這似乎很慢,你確定你在測量正確的東西嗎?您的操作系統花費多少時間來完成該過程?輸出在哪裏?那是緩衝的嗎?是否打印到終端,這會增加比與stdio同步更多的開銷?在你試圖加速它之前,你應該確定你正在測量正確的東西。 –
我重新測量了它重定向到一個文件而不是終端。我也測試了cstdio printf(而不是cout)。隨着sync_with_stdio(假)需要\t 0m0.348s與printf的只需要0m0.046s – coder21