matlab - Octave 与 Matlab 和 Scilab 的性能对比
问题描述
我在 Octave、Scilab 和 Matlab 提示符下测试以下命令。
>> A = rand(10000,10000);
>> B = rand(10000,1);
>> tic,A\B;, toc
时间分别约为 40、15.8 和 15.7 秒。为了比较 Mathematica 的表现是
In[7]:= A = RandomReal[{0, 1}, {10000, 10000}];
In[9]:= B = RandomReal[{0, 1}, 10000];
In[10]:= Timing[LinearSolve[A, B];]
Out[10]= {14.125, Null}
这是否表明 Octave 不如线性方程领域的其他软件强大?
解决方案
我认为你的测试有缺陷。背后的算法A\B
利用方程组中的特殊模式和结构,因此执行时间在很大程度上取决于random(10000,10000)
生成的内容。在我的机器上使用 Octave 进行三个不同的运行时4.0.0
,您的代码返回7.1s
,95.1s
和16.4s
. 这表明随机生成的第一个矩阵可能是稀疏的,当您使用 Scilab 和 Matlab 测试代码时可能就是这种情况。因此,除非您确保算法正在评估相同的事情,或者除非您以合理的方式平均执行时间(这对我来说并不是很容易找到),那么像您那样比较它们是没有意义的.
推荐阅读
- android - 函数返回未定义的、预期的 Promise 或值。虽然我要返回 snapshot.val();
- python - Python:将嵌套列表的值与字典值相除
- python - 如何使用别名将 SQL CASE 表达式转换为 SQL Alchemy
- javascript - Dynatree“得到无效的加载事件”
- python - 如何减少numpy数组中的行重复次数
- java - 将多个项目和依赖项构建到一个 jar 文件中
- java - 使用 Java 进行极慢的内置 AES 加密
- javascript - 使用 jQuery 修改 classList
- azure-functions - 重放编排时是否应该调用 SetCustomStatus()?
- java - 弹簧数据 jpa 中的 `set @variable = 0` 等价物