我发现matlab有很多用途,但我现在的雇主没有matlab许可证:Comsol有一个,它带有comsol Script。乍一看,comsol脚本与matlab完全相同,但过了一段时间,你会发现令人毛骨悚然的差异。许多图形图形的功能不存在,您无法将图形导出为矢量图形格式。但更糟糕的是,对于繁重的计算来说,性能似乎要差得多,因为琐碎的算法会有很多崩溃。
(当然,comsol包的目的完全不同,但我只是只对有兴趣像matlab一样使用它,因为我们没有matlab许可证。)
matlab和Comsol脚本核心是否存在差异?
他们是否以不同方式处理内存和矩阵计算?
答案 0 :(得分:2)
他们是否以不同方式处理内存和矩阵计算?
几乎可以肯定,是(在实施层面)。我以前没有听说过comsol,但它的速度慢并不奇怪。 Mathworks在过去几年中一直致力于性能优化。使用JIT已经摆脱了很多解释器开销。他们还执行缓存友好的技巧,如执行
mybigresult = big1 .* big2 + big1 .* big3
as(C风格的伪代码)
for (size_t i=0; i<numelement; i++) {
mybigresult[i] = big1[i] * big2[i] + big1[i] * big3[i];
}
而不是多次创建临时和扫描内存。最后,在最新版本中,他们为后端的大片添加了多线程支持。 (注意:在语义上,Matlab仍然是单线程的。)
一些免费的Matlab替代品:octave(旨在成为开源的等价物),python + numpy(非常不同的语言,但具有相似的基本功能)。
如果Matlab让你的工作效率提高了,你可能想让你的雇主支付一张许可证......(5万美元/年薪水* 10%的生产力提升)=如果Matlab完成额外工作的价值5千美元购买(只是在这里编号)。