【发布时间】:2014-02-03 16:23:22
【问题描述】:
我观察到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函数这么慢正常吗?
【问题讨论】:
-
在 Matlab 工作区中加载 6 Gig 的数据需要一段时间,我并不感到惊讶。
-
复制文件与将所有数据存储在内存中不同。
textscan比load快吗?您需要将其作为字符串读入还是要将数据转换为整数(即'00319929'变为319929)? -
我并不感到意外。加载文件不仅仅是从磁盘流式传输它。顺便说一句:加载 7k .mat 文件 (200MB) 大约需要 180 秒。
-
您的
dd测量值具有误导性。即使是连接 PCIe 的 SSD 也无法维持 4.6 GB/s 的传输速率。 (SATA 和 SAS 等常用存储总线的上限甚至更低) -
我正在从 Panasas(高性能并行存储)驱动器读取数据。所以传输率很好。
标签: matlab