【问题标题】:Save byte-arrays to disk to reduce memory consumption and increase speed?将字节数组保存到磁盘以减少内存消耗并提高速度?
【发布时间】:2013-02-18 10:04:31
【问题描述】:

我在数据库中有几千个非常大的无线电遥测阵列字段,它们位于同一区域。像素的地理参考对于所有阵列字段都是相同的。数组可以以全有或全无的方式加载到内存中。

我想从所有数组字段中提取特定地理坐标的像素。目前,我查询特定地理坐标的特定像素的索引,然后将数据库中的所有数组字段加载到内存中。然而,这是非常 IO 密集型的,并且会使我们的系统过载。

我会想象以下情况:我将数组保存到磁盘,然后依次打开它们并查找与像素对应的字节位置。我想这比将它们全部加载到内存要少得多,而且要快得多。

寻求一个职位被认为是一种快速的操作还是不会做这样的事情?

【问题讨论】:

  • 搜索通常很快,所以你应该没有问题。当你在内存中进行交换时,你会点击交换吗?
  • 如果可能(只要您的内存模式与您的磁盘映像相同)内存映射文件可能更简单且性能更好

标签: python arrays file file-io multidimensional-array


【解决方案1】:

查找操作所需的时间以低毫秒为单位进行测量,在大多数情况下可能少于 10 毫秒。所以这不会是一个瓶颈。

但是,如果您必须以任何一种方式从数据库中检索和保存所有记录,您最终可能会得到大致相同的 IO 负载,甚至可能更大。写文件的IO时间肯定比读内存大。

是时候做一个小型实验了 :) 尝试使用几个数组并计算性能时间,然后您可以进行数学计算,看看它会如何扩展。

【讨论】:

  • 我会为所有像素写入一次,然后多次读取单个像素坐标。
猜你喜欢
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 2012-04-04
  • 2010-11-29
  • 2016-05-22
  • 2017-12-08
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多