cout 與 printf 的加速小秘訣

作者: Schottky (順風相送)   2019-09-13 08:47:59
: → Killercat: cin/cout有一套加速的trick
: → Killercat: https://tinyurl.com/y55xhery 可以參考這篇 刷榜能用
說到洗榜我興趣就來了 XDDDD
這篇的意思是說 cout 只要把 sync_with_stdio 關掉就可以變快
std::ios_base::sync_with_stdio(false);
然而這和哪套 function 哪個語言無關,它是底層 Standard I/O 的 buffer 行為,
所以 C 的 printf 家族也有一樣的招式:
setvbuf(stdout, NULL, _IOFBF, 0);
_IOFBF 的意思是 fully buffered I/O
而預設值是對 terminal 或 pipe 是 line buffered,
對 file 是 block (full) buffered,
對 stderr 則是 unbuffered (就算沒有換行也立即印出來),
大家可以參考 setvbuf 的 man page 就有清楚說明了
結論:現在 printf 和 cout 平手了
作者: VictorTom (鬼翼&娃娃魚)   2019-09-13 15:46:00
推:)
作者: alan23273850   2019-09-15 12:00:00
這篇怎麼那麼少人推而且我想問為什麼是full buf不是unbuf,抱歉沒學好

Links booklink

Contact Us: admin [ a t ] ucptt.com