我观察到load
函数的性能非常低:
tic; v = load('file.txt', 'ascii'); toc
Elapsed time is 462.528007 seconds.
我反复得到~460秒的表现。 文件大小为5.9 GB,它是一个4列数据,如下所示:
00319929 00786575 00320101 00786305
00319929 00786575 00320107 00786305
00319929 00786575 00320113 00786306
00319929 00786575 00320120 00786306
and so on
同一文件的常规副本大约需要2秒钟:
>> time dd if=file.txt of=/dev/null bs=1024k
5669+1 records in
5669+1 records out
5945005371 bytes (5.9 GB) copied, 1.28557 seconds, 4.6 GB/s
real 0m1.287s
user 0m0.001s
sys 0m1.286s
所以这不是文件系统问题。
load
函数这么慢是否正常?
答案 0 :(得分:0)
尝试textscan
,这可能会更快,并且可以让您在阅读时转换数据,从而节省内存:
fid = fopen('file.txt');
v = textscan(fid,'%s%s%s%s'); % strings
%v = textscan(fid,'%d%d%d%d','CollectOutput',true); v = v{1}; % uint32
%v = textscan(fid,'%f%f%f%f','CollectOutput',true); v = v{1}; % double
fclose(fid);