【发布时间】:2012-12-25 15:41:12
【问题描述】:
我注意到,在我编写的任何程序中,如果我在监视器上进行大量打印(即printf 或fprintf (stderr, "...")),执行时间会明显变慢。
我认为由于磁盘的物理限制,写入磁盘会很慢。我不确定为什么打印到屏幕会显着减慢程序速度。
【问题讨论】:
-
用户和内核空间之间的切换,流水线等。
-
基本上是因为stdio(大部分)是行缓冲的,并且每次写入都会调用系统调用。顺便说一句:在虚拟终端上,终端仿真器也会消耗很多周期。在多 CPU 机器上,一个 CPU 忙于滚动和缓冲,而另一个 CPU 则为其提供输出。