Matlab 对包含对象的大量小型.mat文件的高效磁盘访问
我正在尝试确定存储大量小型.mat文件的最佳方法,大约9000个对象,大小从2k到100k不等,总共大约需要半个gig 典型的用例是,我一次只需要从磁盘中取出少量(比如10个)文件 我所尝试的: 方法1:如果我单独保存每个文件,我会遇到性能问题(非常慢的保存时间和一段时间后的系统停滞),因为Windows 7很难处理文件夹中的文件(我认为我的SSD也很难处理)。但是,最终结果很好,我可以很快加载我需要的内容。这是使用'-v6'保存 方法2:如果我将所有文件保存在一个.mat文件中,然后只加载所需的变量,则访问速度非常慢(加载整个文件所需的时间约为加载整个文件所需时间的四分之三,根据保存的顺序变化很小)。这也在使用“-v6”保存 我知道我可以将文件分割成许多文件夹,但这似乎是一个令人讨厌的黑客行为(并且无法解决SSD不喜欢编写许多小文件的问题),有更好的方法吗 编辑:Matlab 对包含对象的大量小型.mat文件的高效磁盘访问,matlab,file-io,mat-file,matlab-load,Matlab,File Io,Mat File,Matlab Load,我正在尝试确定存储大量小型.mat文件的最佳方法,大约9000个对象,大小从2k到100k不等,总共大约需要半个gig 典型的用例是,我一次只需要从磁盘中取出少量(比如10个)文件 我所尝试的: 方法1:如果我单独保存每个文件,我会遇到性能问题(非常慢的保存时间和一段时间后的系统停滞),因为Windows 7很难处理文件夹中的文件(我认为我的SSD也很难处理)。但是,最终结果很好,我可以很快加载我需要的内容。这是使用'-v6'保存 方法2:如果我将所有文件保存在一个.mat文件中,然后只加载所需
这些对象主要由一个双数据的数字矩阵和一个uint32标识符的伴随向量,以及一组小的标识属性(字符和数字)组成。尝试将它们作为BLOB存储在数据库中
我也会尝试多文件夹方法——它的性能可能比你想象的要好。如果您需要的话,它还可以帮助您组织文件。需要考虑的五个想法:
save
将对象保存在两个位置)我提出的解决方案是保存每个对象大约100个的对象数组。这些文件通常为5-6兆,因此加载并不禁止,访问只需加载正确的数组,然后将其子集到所需的条目即可。这种折衷方案避免了写入太多的小文件,仍然允许快速访问单个对象,并避免了任何额外的数据库或序列化开销。谢谢迭代器。我已经在不进行压缩(V6)的情况下保存了它们,因为我发现较新的格式往往访问速度较慢,并且通常会导致较大的文件大小(即使使用压缩)。我来看看HDF5。Matlab的HDF5实现似乎也不支持自定义对象。你能描述一下这些对象吗?在这种情况下,可以更快地转换和访问它们。在压缩过程中,-V7和-V7.3有一个奇怪的地方;对于2GB以下的所有内容,我倾向于使用-V7。我认为Matlab的最新版本使用HDF5,但是一些(所有?)版本在使用中有一个已知的错误,导致编写速度极慢。这就是为什么我倾向于使用旧的格式来处理所有小的东西。我找不到在Matlab中序列化自定义对象的方法,因此在填充数据库之前,我仍然需要保存到磁盘。相关问题: