Julia: save 和load的用法 和与Matlab的效率比较

     不得不说一下,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进行进一步优化!

你可能感兴趣的:(Julia,save,load,matlab,julia)