1

尽量使用 Matlab 的 save -v6

 3 years ago
source link: https://zhiqiang.org/coding/save-load-data-v6-is-fast.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

尽量使用 Matlab 的 save -v6

作者: 张志强

, 发表于 2010-12-29

, 共 1056 字 , 共阅读 206 次

上次说起遇到两个 Matlab 的效率问题,还剩下 save , load 没说。不过这个问题的结论挺简单的,就是在 save 的时候尽量指定使用-v6 选项。

1. save, load 函数的基本情况

有几种情况需要用到 save、load

  1. 如果过程中数据量太大,不能全部保留在内存中,只能通过 save、load 的方式分块处理。
  2. 用来保存计算结果,以备下次使用。

save 的选项(由 save 函数的最后一个参数控制,省略时使用默认值)

  • -v7.3 :支持超过 2G 的保存文件。
  • -v7.0 :支持数据压缩。
  • -v6 :在-v4 的基础上,还支持多维矩阵、cell 和结构数组。
  • -v4 :可保存二维实数、字符型矩阵和稀疏矩阵

一般默认选项为-v7。

2. 尽量使用-v6 选项

关于-v6 和默认-v7 的速度可参见下面的例子:

clear all
a.b = rand(1000, 1000);
a.c = a;

>> tic; for i = 1:10, save('A.mat', 'a'); end; toc
Elapsed time is 6.877207 seconds.

>> tic; for i = 1:10, load('A.mat'); end; toc
Elapsed time is 1.244955 seconds.

>> tic; for i = 1:10, save('A.mat', 'a', '-v6'); end; toc
Elapsed time is 3.415954 seconds.

>> tic; for i = 1:10, load('A.mat'); end; toc
Elapsed time is 0.174211 seconds.

从此处可见,使用-v6 选项的 save 比默认-v7 的速度要快 1 倍;在 load 时节约的时间更多,导入 v6 型的 mat 文件比 v7 型文件要快 7 倍。

那使用-v4 的速度是不是更快呢?测试发现没有明显区别。而且-v6 比-v4 支持的数据类型要多得多,所以推荐全部使用-v6。

当然-v7 选项并不是没有好处的,使用 v7 选项得到的 mat 文件要小一些,不过现在硬盘这么便宜,在大数据量的处理中还是速度更重要一些。

Q. E. D.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK