首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RAMdisk比磁盘慢?

RAMdisk比磁盘慢?
EN

Stack Overflow用户
提问于 2010-10-14 00:23:20
回答 6查看 8.2K关注 0票数 15

我创建的python程序是IO界的。大部分时间(超过90%)是在一个循环中度过的,重复次数约为10,000次。在这个循环中,生成~100 to数据并将其写入一个临时文件;然后由另一个程序将其读取,并对收集到的数据进行统计。这是将数据传递到第二个程序的唯一方法。

由于这是主要的瓶颈,我认为将临时文件的位置从我的主硬盘移动到一个(~40 my ) RAMdisk (在超过2GB的空闲内存中)将大大提高该文件的IO速度,从而减少运行时间。然而,我获得了以下结果(每次平均超过20次):

  • 测试数据1:无RAMdisk -72.7 s,RAMdisk -78.6 s
  • 测试数据2:无RAMdisk -223.S,RAMdisk -235.1 s

看来RAMdisk比我的硬盘慢。

是什么导致了这一切?

除了使用RAMdisk以获得更快的文件IO之外,还有其他选择吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-10-14 00:47:13

您的操作系统几乎肯定已经在缓冲/缓存磁盘写入。不足为奇的是,RAM磁盘的性能如此接近。

不知道你到底在写什么,也不知道怎么写,我们只能提供一般性的建议。一些想法:

  • --如果您有2GB内存--您可能有一个不错的处理器,所以您可以将这些数据写入具有压缩功能的文件系统。假设您的数据是可以接受的,这将用I/O操作来换取CPU时间。如果您正在执行许多小的写入操作,则将它们组合在一起编写更大的部分。(我们能看到源代码吗?)
  • 在使用后是否删除了100 KB的文件?如果你不需要它,那就删除它。否则,操作系统可能被迫将其刷新到磁盘。
票数 4
EN

Stack Overflow用户

发布于 2010-10-14 00:34:14

你能把数据分批写出来,而不是一次写一个项目吗?您是缓存资源,如打开文件句柄等,还是清理这些资源?磁盘写入是否阻塞,可以使用后台线程在不影响计算性能的情况下饱和IO。

我将首先考虑优化磁盘写入,然后查看完成后更快的磁盘。

票数 2
EN

Stack Overflow用户

发布于 2010-10-14 00:47:27

我知道Windows非常积极地在RAM中缓存磁盘数据,而且100 K很容易适应。写入直接进入缓存,然后可能通过非阻塞写入写入磁盘,从而允许程序继续运行。RAM磁盘可能不支持非阻塞操作,因为它希望这些操作是快速的,不值得麻烦。

通过减少程序和缓存可用的内存量,您将增加用于分页的磁盘I/O的数量,即使只稍微增加一点。

这都是我的猜测,因为我不熟悉内核或驱动程序。我还推测Linux也会运行类似的操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3929096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档