问题描述
我希望使用我编写的代码加快大型二进制文件的加载和处理速度。该代码有效,但速度很慢。我想进行改进,但是每当我第二次加载文件时,我都无法获得 真正 加载速度,因为缓存的内存会加快速度。如何禁用此缓存,或者如何衡量代码的真实性能,以便我可以对其进行迭代?
这是我在做什么:
我尝试手动删除 np.memmap
存储数据的变量,然后使用 del
对其调用垃圾收集器,但这无济于事。
我应该如何从内存中释放这些信息,以便获得真实的加载时间(或者我如何解决这个问题来衡量真实的性能)?我需要 Cython 来妥善处理这个问题吗,我希望现在不要去那里。
编辑,部分代码:
加载内存映射:
gc.collect()
这两行都是从我的代码中的一个函数中调用的。 在这些之后,我尝试运行垃圾收集器:
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
但是这并没有恢复原来的缓慢加载时间,因此我认为它没有清除内存缓存
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)