![]() |
1
30
无缓冲输出非常慢。
默认情况下
尝试打开缓冲
|
![]() |
2
14
您可以将字符串存储在缓冲区中,并在缓冲区满后定期将其输出到文件(或控制台)中。 如果输出到控制台,滚动通常是一个杀手。 |
![]() |
3
9
如果您要打印到控制台,通常会非常慢。我不知道为什么,但我相信在控制台以图形方式显示输出的字符串之前,它不会返回。此外,不能将mmap()转换为stdout。 写入文件的速度应该快得多(但仍然比计算哈希慢几个数量级,所有I/O都慢)。 |
![]() |
4
7
您可以尝试将shell中的输出从控制台重定向到文件。使用它,可以在几秒钟内创建大小为千兆字节的日志。 |
![]() |
5
6
恐怕3和4比我强。 |
![]() |
6
4
由于I/O总是比CPU计算慢得多,所以您可能首先将所有值存储在最快的I/O中。因此,如果您有足够的内存,请使用RAM;如果没有,请使用文件,但它比RAM慢得多。 现在可以在以后或由另一个线程并行打印这些值。因此,计算线程可能不需要等待printf返回。 |
![]() |
7
4
我很久以前发现的 using this technique 应该是显而易见的。 不仅I/O速度慢,特别是控制台,而且格式化十进制数字也不快。如果你能把二进制的数字放入大的缓冲区,并把它们写到一个文件中,你会发现它要快得多。 另外,谁来读呢?如果没有人需要阅读全部内容,那么就没有必要以人类可读的格式打印全部内容。 |
![]() |
8
4
|
![]() |
9
2
我猜终端类型正在使用一些缓冲输出操作,所以当您执行printf时,它不会在split微秒内输出,而是存储在终端子系统的缓冲内存中。 这可能会受到其他可能导致速度减慢的事情的影响,可能除了您的程序之外,还有一个内存密集型的操作正在运行。简而言之,可能同时发生的事情太多了,分页、交换、另一个进程的大量I/O、使用的内存配置、可能的内存升级等等。 最好将字符串连接到达到某个限制,然后在达到该限制时立即将其全部写出。或者甚至使用pthreads来执行所需的进程执行。
编辑:
至于2,3,我无法理解。4,
user@host:/usr/src/linux $ make; make menuconfig **OR kconfig if from X** 这将启动内核菜单,在“设备”子树下的“视频设置”部分中进行挖掘。
编辑:
希望这有帮助, 最好的问候, 汤姆。 |
![]() |
Sweepy Dodo · JSON lite的格式化 6 月前 |
![]() |
giantjenga · 优化整数向量到二进制向量的转换 7 月前 |
![]() |
Zegarek · Postgresql递归查询未提供预期结果 7 月前 |
![]() |
Joe · 为什么这两个查询之间的性能存在如此大的差异? 11 月前 |
![]() |
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 11 月前 |
![]() |
Mohan · 是否有一种更快的方法来编写代码,从1:N中提取许多随机样本? 11 月前 |
![]() |
user2980746 · 在C#字典中键入xyz对的最有效方法是什么? 11 月前 |