我有一个非常大的结构数组(超过100k结构)必须保存到文件中。之后,必须一次加载和处理这些。目前的方法是仅使用save
来保存它。这需要大约8秒才能保存,大约需要100秒才能加载。
我尝试了几种方法来加快速度:
将-v6
标记与save
一起使用。这加快了速度,但并不显着。
分别使用getByteStreamFromArray()
和getArrayFromByteStream()
进行序列化和反序列化。这没有效果。具体来说,序列化和反序列化只需要保存和加载就可以了。
(仍在处理此问题)序列化数组,保存,加载,然后仅处理每个结构(而不是整个数组)的反序列化
在这种情况下,有没有人有任何改善表现的建议?这似乎是一个普遍的问题。
答案 0 :(得分:1)
我相信getByteStreamFromArray()
和getArrayFromByteStream()
由save()
和load()
使用,因此您的结果对我来说并不是很令人惊讶。使用手工制作的序列化函数可以获得更好的性能,这些函数可以爬下你的结构并只保存真正需要的东西。通过压缩保存的数据可以实现额外的保存。您可以在此处阅读一些实施提示:http://undocumentedmatlab.com/blog/improving-save-performance
注意#1 - 基于Matlab版本,数据和平台的YMMV
注意#2 - 对于不了解这一点的读者,getByteStreamFromArray()
和getArrayFromByteStream()
都是未记录的Matlab函数。这里提供了他们行为的唯一[非官方]解释,AFAIK:http://undocumentedmatlab.com/blog/serializing-deserializing-matlab-data