【发布时间】:2010-09-30 16:52:17
【问题描述】:
在现代系统上,可以通过压缩输出流来提高本地硬盘的写入速度吗?
这个问题源于我正在处理的一个案例,其中一个程序连续生成大约 1-2GB 的文本记录数据并将其转储到硬盘上的原始文本文件中,我认为它是 IO 绑定的。我是否希望能够通过在数据进入磁盘之前对其进行压缩来减少运行时间,或者压缩的开销是否会耗尽我可以获得的任何收益?有一个空闲的第二个核心会影响这个吗?
我知道这会受到用于生成数据的 CPU 数量的影响,因此关于需要多少空闲 CPU 时间的经验法则会很好。
我记得一个视频谈话,有人使用压缩来提高数据库的读取速度,但 IIRC 压缩比解压缩更占用 CPU。
【问题讨论】:
-
经验法则在这里对您没有帮助。它是您的磁盘、您的 CPU 和您的数据。设置一个测试用例,并在压缩和不压缩的情况下测量吞吐量和 CPU 负载 - 看看是否值得权衡。
-
我想我的问题是值得我花时间运行测试吗?如果有人尝试过这个,我可以从那里得到很多结果(但是,是的,我仍然需要测试我的设置)。
-
@BCS - 具有额外的核心和优化的文本压缩器,它可以处理您的序列化数据 - 我认为它可能值得一试。文本压缩 10:1 类型的数字和现代处理器,如果连续输入可能会跟上。
-
@BCS:听起来您的第一步是运行 time(1) 并查看您正在使用的 CPU 比例。如果它很低,请尝试下一个弹出的东西。
标签: performance compression io