2014-01-24 44 views
-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秒。

+1

你忘了放()(每行)或PUCH一個週期()... –

+2

如果您的時間,你的程序,你可能會發現它實際上* *只使用CPU時間的幾毫秒。其餘全部是由於您的輸出終端可以處理文本的速度。爲什麼你需要在屏幕上打印這麼多的數據?你無法快速閱讀,你能嗎? – usr2564301

+1

我不相信這些數字。運行它作爲'./a.out> /tmp/out.txt'來獲得更現實的度量(或者甚至首先重定向到/ dev/null)。 –

回答

0

按照你那種意見,我做了一些更多的測試,我想出了是fputs()是最快的。 > out.txt爲〜0.45s,> NUL爲〜0.61s。所以事實證明,控制檯輸出正在放緩一切。

相關問題