我想这是一个性能计算问题。我正在用 C 编写一个程序,它产生大量的输出,远远超过通常可以完全存储在 RAM 中的输出。我打算简单地将输出写入stdout
;所以它可能只是进入屏幕,或者可能被重定向到文件中。我的问题是如何为将存储在 RAM 中的数据选择最佳缓冲区大小?
输出数据本身并不是特别重要,所以我们可以说它正在生成大量随机整数列表。
我打算有 2 个线程:一个产生数据并将其写入缓冲区,另一个将该缓冲区写入stdout
. 这样,我可以在前一个缓冲区仍在写入时开始生成下一个输出缓冲区stdout
。
需要明确的是,我的问题不是关于如何使用等函数malloc()
。pthread_create()
我的问题纯粹是关于如何为最佳缓冲区大小选择多个字节(512、1024、1048576),这将提供最佳性能?
理想情况下,我想找到一种可以动态选择最佳缓冲区大小的方法,以便我的程序可以适应当时正在运行的任何硬件。我试图寻找这个问题的答案,虽然我发现了一些关于缓冲区大小的线程,但我找不到任何与这个问题特别相关的东西。因此,我只是想把它作为一个问题发布,希望我能得到一些不同的观点,并提出比我自己更好的东西。