我最近在MatLab上写了一个程序,它在很大程度上依赖于MatLab' importdata'功能和' lsqcurvefit'来自优化工具箱的功能。在Windows中使用MatLab R2011b执行此代码大约需要15秒。当我将代码传输到Linux(CentOS)机器时,大约需要30分钟。
使用配置文件工具,我确定大部分额外的计算时间花费在“导入数据”上。功能和' lsqcurvefit'功能。我清除了两个环境中的所有变量,并使用' importdata'在两个环境中导入了相同的数据文件。在Linux中,这需要大约5秒钟,而在Windows中,这需要大约0.1秒。
有没有办法解决这个问题?代码在Linux中快速运行是绝对必要的。 Linux机器的内存和处理速度都远远超过Windows机器的内存和处理速度。在做了一些阅读之后,我尝试增加Java堆内存,但这没有效果。
答案 0 :(得分:1)
importdata
本身实际上只是一个调用各种其他函数的包装器 - 例如xlsread
- 取决于输入数据的类型。因为它需要多种类型的文件作为输入(你甚至可以用它加载图像,尽管为什么你会是另一回事),它需要弄清楚文件是什么,然后调用适当的函数。
dlmread
仅采用特定类型的文件(ASCII分隔数字)。
简而言之:
当您可以使用更具体的功能时,切勿使用importdata
等一般适用的功能。您可以看到文件格式列表和特定的读/写函数here。
我也不认为这仅限于Linux。重复一千次,在Windows机器上加载一个小的制表符分隔文件:
dlmread
:0.756655秒
csvread
:1.332842秒
importdata
:69.508252秒