不得不说一下,matlab的save和load做的真是好,这是主要是针对较大的文件时,其功能相当的强大。我平时大部分数据,原来都是通过matlab的SAVE成.MAT文件后,再LOAD一下,真是方便。文件不管大小,不管种类,特别好用。
那么,Julia的save 和load又如何?
一、save 和load
在加载了HDF5包后,usingHDF5, JLD (二个都不能少!)后,就可以象MATLAB一样使用save 和load了。
julia> d =rand(1000,1);
# 把变量d 写入硬盘
julia> @save "C:\\Users\\Administrator\\Desktop\\d.jld"d
# 效率 : 远远在序列化之上!!
julia> test =rand(1000000,1)
1000000x1 Array{Float64,2}:
0.399838
0.983189
0.863656
0.135777
........
julia> @time @save"C:\\Users\\Administrator\\Desktop\\test.jld" test
elapsed time: 0.055807782 seconds (519268 bytes allocated)
二、和MATLAB的比较
从功能和用法上看,Julia的HDF5库使用上也简单方便,以下,主要比较一下二者的效率。
1、小数据
(1)save
>> tic;Test =rand(1000000,1);toc
Elapsed time is 0.029130 seconds.
>>tic;save('C:\Users\Administrator\Desktop\Test.mat','Test');toc
Elapsed time is 0.523215 seconds.
julia> @time test =rand(1000000,1)
elapsed time: 0.005679041 seconds (8001560 bytes allocated)
或者:
julia> tic();test =rand(1000000,1);toc();
(2) load
# 把变量d载入内存
bb=@load "C:\\Users\\Administrator\\Desktop\\d.jld"
# 效率
julia> @time @load"C:\\Users\\Administrator\\Desktop\\d.jld"
elapsed time: 0.002416908 seconds (10620 bytes allocated)
可以看出,JULIA在这二个步骤上都更优!大约性能提高十倍左右。
2、大数据
需要指出的是,JULIA@save后的文件变得太大,有些文件时间需要过长,并没有MATALB效率高,在适应性上也有一定的问题。
我测试了几个稍大的数据文件,在效率上,MATLAB要比JULIA快2-10倍不等。
3、字符串
julia对于字符串处理的效率比较低,是其突出的一个弱点。
@time @save"C:\\Users\\Administrator\\Desktop\\testdata.jld" ["ssadadddddddddddddddddddddddddddddddddddddddddddddddd"]
elapsed time: 0.041504262 seconds (54340 bytes allocated)
4、julia的注意事项
另外,Julia在使用@save 和@load需要注意,尽量不使用描象类型(如String),可以用具体类型替代(AsciiString).如果使用具体类型,速度可以提高很多。
此外,HDF5包可能无法识别包括有中文在内的路径。
所以,总体上,我认为MATLAB在save 和load上目前,综合性能上有优势。期待HDF5进行进一步优化!