-1
我有一個函數返回指向包含4個字符的字符的指針。向stdout發送大量字符串的最佳方式是什麼?
char *foo(unsigned short n)
{
return "abc\n";
}
現在我運行它100000次,我發送結果到標準輸出。它必須以儘可能最快的方式完成。
不用寫就可以運行這個函數10萬次大約需要0.45秒。
我已經試過:
- 的printf
...
printf("%s", foo(n));
...
~6.5s
- FWRITE
...
fwrite(foo(n), 4, 1, stdout);
...
~9.9s
- strncat函數來緩衝和fwrite
char buffer[400001] = "";
...
strncat(buffer, foo(n), 4);
...
fwrite(buffer, 400000, 1, stdout);
~7s
有沒有一種方法,使其更快?我想至少低於5秒。
你忘了放()(每行)或PUCH一個週期()... –
如果您的時間,你的程序,你可能會發現它實際上* *只使用CPU時間的幾毫秒。其餘全部是由於您的輸出終端可以處理文本的速度。爲什麼你需要在屏幕上打印這麼多的數據?你無法快速閱讀,你能嗎? – usr2564301
我不相信這些數字。運行它作爲'./a.out> /tmp/out.txt'來獲得更現實的度量(或者甚至首先重定向到/ dev/null)。 –