我正在尝试确定存储大量小型.mat文件的最佳方法,大约9000个对象,大小从2k到100k,总共大约半场演出。
典型的用例是我只需要一次从磁盘中提取少量(例如10个)文件。
我尝试了什么:
方法1:如果我单独保存每个文件,我会遇到性能问题(非常慢的保存时间和系统迟缓一段时间后),因为Windows 7难以处理,所以文件夹中的文件可能(我认为我的SSD有这也很艰难。)但是,最终结果很好,我可以很快加载我需要的东西。这是使用'-v6'保存。
方法2:如果我将所有文件保存在一个.mat文件中,然后仅加载我需要的变量,则访问速度非常慢(加载大约需要四分之三的时间来加载整个文件,变化取决于保存的顺序)。这也是使用'-v6'保存。
我知道我可以将文件拆分成许多文件夹,但它看起来像是一个讨厌的黑客(并且不会修复SSD不喜欢编写许多小文件),有更好的方法吗?
编辑: 这些对象主要由双数据的数字矩阵和uint32标识符的附带向量以及一堆小的标识属性(char和numeric)组成。
答案 0 :(得分:2)
要考虑的五个想法:
save
换行以保存两个地方的对象)。更新:OP提到了自定义对象。序列化这两种方法有两种方法:
答案 1 :(得分:1)
尝试将它们作为blob存储在数据库中。
我也会尝试多个文件夹方法 - 它可能比你想象的要好。如果你需要的话,它也可能有助于组织文件。
答案 2 :(得分:0)
我提出的解决方案是保存大约100个对象的对象数组。这些文件往往是5-6 meg,因此加载不是禁止的,访问只是加载正确的数组然后将它们子集化到所需的条目。这种妥协避免了编写太多小文件,仍允许快速访问单个对象,并避免任何额外的数据库或序列化开销。