我创建的python程序是IO界的。大部分时间(超过90%)是在一个循环中度过的,重复次数约为10,000次。在这个循环中,生成~100 to数据并将其写入一个临时文件;然后由另一个程序将其读取,并对收集到的数据进行统计。这是将数据传递到第二个程序的唯一方法。
由于这是主要的瓶颈,我认为将临时文件的位置从我的主硬盘移动到一个(~40 my ) RAMdisk (在超过2GB的空闲内存中)将大大提高该文件的IO速度,从而减少运行时间。然而,我获得了以下结果(每次平均超过20次):
看来RAMdisk比我的硬盘慢。
是什么导致了这一切?
除了使用RAMdisk以获得更快的文件IO之外,还有其他选择吗?
发布于 2010-10-14 00:47:13
您的操作系统几乎肯定已经在缓冲/缓存磁盘写入。不足为奇的是,RAM磁盘的性能如此接近。
不知道你到底在写什么,也不知道怎么写,我们只能提供一般性的建议。一些想法:
发布于 2010-10-14 00:34:14
你能把数据分批写出来,而不是一次写一个项目吗?您是缓存资源,如打开文件句柄等,还是清理这些资源?磁盘写入是否阻塞,可以使用后台线程在不影响计算性能的情况下饱和IO。
我将首先考虑优化磁盘写入,然后查看完成后更快的磁盘。
发布于 2010-10-14 00:47:27
我知道Windows非常积极地在RAM中缓存磁盘数据,而且100 K很容易适应。写入直接进入缓存,然后可能通过非阻塞写入写入磁盘,从而允许程序继续运行。RAM磁盘可能不支持非阻塞操作,因为它希望这些操作是快速的,不值得麻烦。
通过减少程序和缓存可用的内存量,您将增加用于分页的磁盘I/O的数量,即使只稍微增加一点。
这都是我的猜测,因为我不熟悉内核或驱动程序。我还推测Linux也会运行类似的操作。
https://stackoverflow.com/questions/3929096
复制相似问题