读取顺序文件 - 压缩文件与未压缩文件

2024-01-16

我正在寻找从磁盘读取顺序文件的最快方法。 我在一些帖子中读到,如果我使用 lz4 等压缩文件,我可以获得比读取平面文件更好的性能,因为我将最大限度地减少 i/o 操作。

但是当我尝试这种方法时,扫描 lz4 压缩文件的性能比扫描平面文件差。我没有尝试上面的lz4demo,但是找了一下,我的代码很相似。

我发现了这个基准:http://skipperkongen.dk/2012/02/28/uncompressed-versus-compressed-read/ http://skipperkongen.dk/2012/02/28/uncompressed-versus-compressed-read/ http://code.google.com/p/lz4/source/browse/trunk/lz4demo.c?r=75 http://code.google.com/p/lz4/source/browse/trunk/lz4demo.c?r=75

与未压缩的文件相比,真的有可能提高读取压缩的顺序文件的性能吗?我究竟做错了什么?


是的,可以通过使用压缩来改善磁盘读取。

如果您使用多线程读取器,则最有可能发生这种效果:当一个线程从磁盘读取压缩数据时,另一个线程解码内存中的前一个压缩块。

考虑到 LZ4 的速度,解码操作很可能在另一个线程完成读取下一个块之前完成。这样,您将获得与测试文件的压缩比成比例的带宽改进。

显然,基准测试时还需要考虑其他影响。例如,HDD的寻道时间比SSD大几个数量级,在恶劣的情况下,它可以成为时序的主导部分,将任何带宽优势降低为零。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取顺序文件 - 压缩文件与未压缩文件 的相关文章

随机推荐

  • 为什么加载后命令提示符消失了?

    使用下面的代码 命令提示符几乎在出现后立即消失 此代码不应该显示正在使用的所有可移动驱动器吗 using System Linq using System IO using System namespace ConsoleApplicati
  • 通过 cron 发布到 Facebook

    两天来我一直在尝试将从 Twitter 搜索收集的消息自动发布到我的 Facebook 页面之一 即通过 cronjob twitter 部分运行得很好 但我怎么也无法让 Facebook 部分工作 问题是我的脚本可以工作 直到它不能工作
  • Visual Studio 代码未加载我的 python 解释器

    在这个项目中 我一直在使用我在 venv 中设置的 python 解释器 最近我更改了我的 python 解释器 我在用户设置中将其设置为默认解释器 例如 vs 文档vs code python 环境 https code visualst
  • EXC_BAD_ACCESS 使用 IBInspectable

    我正在尝试使用IBInspectable为我的视图添加边框 extension UIView private func getBorder integer Int gt UIRectEdge if integer 1 return top
  • 在 forEach 之后发送响应

    请注意 这不是两个类似标题问题的重复 这两个问题使用 Mongoose 并且答案仅适用于 Mongoose 查询 我有一个目录列表 每个目录都包含一个文件 我想返回一个 JSON 列表 其中包含每个文件的内容 我可以毫无问题地加载文件 但是
  • Python 检查值是否在字典列表中

    我有一个字典列表 例如 name Bernard age 7 name George age 4 name Reginald age 6 我想检查字符串值是否与列表中任何字典中的 名称 值相同 例如 Harold 将为 False 但 Ge
  • XMPP:检索 BOSH 会话 ID 和 RID

    请告诉我如何检索 SID 和 JID 我正在使用 Strope JS var conn new Strophe Connection bosh service 然而 conn sid or conn rid没有返回相同的数字 经过这个和那个
  • 尝试获取字段值时出现属性错误

    我正在使用 django 休息框架 并且我尝试使用的序列化器正在创建错误 我正在尝试做类似的事情https gist github com anonymous 7463dce5b0bfcf9b6767 https gist github c
  • 在不耗尽 RAM 的情况下使用并发 Future

    我正在做一些文件解析 这是一个 CPU 密集型任务 无论我向该进程放入多少文件 它使用的 RAM 都不会超过 50MB 该任务是可并行的 我已将其设置为使用下面的并发 future 将每个文件解析为单独的进程 from concurrent
  • 在Java中写入文本文件而不覆盖

    我正在尝试编写一种方法 如果 log txt 文件 尚不存在 则创建一个 log txt 文件 然后写入该文件 我遇到的问题是每次调用该方法时 它都会覆盖现有日志 如何更改方法 以便不覆盖数据而只更新文件 我的写入文件方法 File log
  • DataTable - 使可滚动,设置背景颜色并修复/冻结标题行和第一列

    我开始在 Flutter 中使用 webview 图表 表格进行开发 但是我遇到了一些表格问题 I use 数据表来表示表中的数据 有第一个问题 默认情况下 如果数据超出屏幕 则它不可滚动 所以我嵌入了一些小部件 即 SingleChild
  • 如何输入提示

    我如何输入提示来摆脱剩余的反射调用 def B amap D A i D B amap doubles aget A int i j doubles row 2 aget row int j 还剩下两个反射调用 但我不知道如何摆脱它们 您没
  • 使用 Alpha 通道绘制重叠的圆圈

    这个问题已经在这里得到了回答 重叠圆的组合面积 https stackoverflow com questions 1667310 combined area of overlapping circles 不过我的问题更具体 我在其他任意大
  • 不同格式的 SQL Server 日期时间比较

    我有一个 SQL 查询 我将在其中传递dd mm yyyy但SQL查询需要mm dd yyyy 我怎样才能启用此查询dd mm yyyy并根据正确的格式显示正确的结果 在 SQL Server 2008 中实现这一目标的最佳方法是什么 SE
  • realurl 生成没有 cHash 的条目

    我有一个 piBase 扩展 其中包含记录列表和详细信息页面 当首先调用列表时 一切都很好 realurl 版本2 0 15 TYPO3版本7 6 10 使用cHash参数创建详细信息页面的url 例如 cHash dc3409cee49f
  • Bootstrap 4.0 - 带图像+导航栏+全高正文的响应式标题

    我正在使用 bootstrap 4 构建一个响应式页面 其中有一个标题 标题部分 其中包含客户徽标 名称和导航栏的图像 所有这些元素都是响应式的 即图像根据屏幕尺寸缩小 导航栏在小屏幕上最小化 现在我想让身体也能做出反应 即 用内容填充屏幕
  • 多表触发器 SQL Server noob

    我有很多表都具有相同的 2 个日期时间列 lastModDate dateAdded 我想知道是否可以为这些表设置全局插入更新触发器来设置日期时间值 或者如果没有 有哪些方法 非常感谢任何指点 我同意没有这样的全局触发器 但是我们当然可以通
  • 如何将约束名称添加到已存在的约束中

    有没有办法为已经存在的约束命名 例如 create table employee emp id number 10 emp name varchar2 20 dept id number 10 foreign key dept id ref
  • Rails attr_accessible rspec 检查

    当我想测试属性是否为 不是时无障碍使用 RSpec 我这样做 class Foo attr accesible something else end describe Foo do it author should not be acces
  • 读取顺序文件 - 压缩文件与未压缩文件

    我正在寻找从磁盘读取顺序文件的最快方法 我在一些帖子中读到 如果我使用 lz4 等压缩文件 我可以获得比读取平面文件更好的性能 因为我将最大限度地减少 i o 操作 但是当我尝试这种方法时 扫描 lz4 压缩文件的性能比扫描平面文件差 我没