1

我希望使用我编写的代码来加速大型二进制文件的加载和处理。该代码有效,但速度很慢。我想进行改进,但是每当我第二次加载文件时,我都无法获得真正的加载速度,因为缓存内存会加快速度。如何禁用此缓存,或者如何测量代码的真实性能以便进行迭代?

这就是我正在做的事情:

  1. 首先调用np.memmap它来加载一个大的二进制文件
  2. 索引到 memmapped 数组以检索我想要的值(这是缓慢的部分,afaik)

我尝试手动删除del存储数据的变量,然后在其上调用垃圾收集器,gc.collect()但这无济于事。

我应该如何从内存中释放这些信息,以便获得真正的加载时间(或者如何解决这个问题来衡量真正的性能)?我需要 Cython 来正确处理这个问题吗,我希望暂时不要去那里。

编辑,代码位:

加载内存映射:

traces  = np.memmap(datapath, dtype='int16', mode='r',
                     offset=offset, shape=(number_samples, number_channels))

# index into this, where waveform_ids are the indices I need
waveforms=traces[waveform_ids,:].astype(np.float32).T

这两行都是从我的代码中的函数中调用的。在这些之后,我尝试运行垃圾收集器:

import gc
del waveforms
gc.collect()

但是这并没有恢复原来的缓慢加载时间,因此我认为它没有清除内存缓存

4

0 回答 0