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