我有一个大于主内存的数据集。压缩后,它适合内存。但是,内存中的解压缩是一种计算密集型的。与访问硬盘中的未压缩数据相比,内存中解压在完成时间方面有什么优势吗?假设来自 HDD 的数据将全部加载到内存中(即在处理过程中不会随机访问 HDD)。任何人以前都做过任何基准测试。谢谢。
问问题
2888 次
4 回答
2
这取决于您的数据、处理方式以及机器的规格。如果不分析您的确切情况,一些考虑因素几乎不可能回答:
- 你的压缩效果如何?不同的压缩算法使用不同数量的 CPU。
- 数据是如何使用的?在处理之前需要缓冲的数据量会影响在解压和处理之间可以多线程的数量,这将极大地影响你的答案。
- 你的环境是什么?具有 1TB 数据要处理的 16 核服务器与具有 1GB 数据的精美手机有很大不同,但是从您的问题中不清楚您正在处理哪个(HDD 建议至少使用计算机而不是手机,但是服务器vs桌面仍然相关)。
- 加载数据后,您进行了多少随机访问?您建议加载后不会随机访问 HDD,但如果您要加载完整的压缩数据并且一次只解压缩一部分数据,那么访问数据的模式很重要 - 您可能已经解压缩一切都要处理两次(或更多!)。
归根结底,这个问题非常主观,如果您认为性能差异很重要,我建议您创建一些基本的测试场景并进行大量配置。
举一个更具体的例子:如果您正在执行重型音频或视频处理,则该过程是 CPU 密集型的,但通常会接受数据流。在这种情况下,压缩可能会减慢您的速度,因为瓶颈将是 CPU。
或者,如果您从文件中读取十亿行文本并计算每个文本中元音的总数,您的磁盘 IO 可能会成为瓶颈,您将受益于减少磁盘 IO 并通过解压缩更努力地工作 CPU文件。
于 2012-10-24T15:26:42.597 回答