我发现matlab有很多用途,但我现在的雇主没有matlab许可证: Comsol有一个,它附带了comsol脚本。乍一看,comsol脚本与matlab完全相同,但过了一段时间,您就会发现惊人的差异。许多图形的功能并不存在,你不能将图形导出成矢量图形格式。但更糟糕的是,对于计算量很大的情况,性能似乎要差得多,在一些琐碎的算法上有很多问题。
(当然,comsol包的目的完全不同,但我只想像matlab一样使用它,因为我们没有matlab许可证。)
matlab和Comsol脚本内核有什么不同吗?
它们是否以不同的方式处理内存和矩阵计算?
发布于 2008-11-28 06:55:12
,它们处理内存和矩阵计算的方式不同吗?
几乎可以肯定,是的(在实现级别)。我以前从未听说过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让你的工作效率更高,你可能想让你的雇主为你的驾照买单。(年薪50,000美元*生产率提高10% )=如果Matlab被购买的话,完成的额外工作价值为5,000美元(只是在这里编造数字)。
https://stackoverflow.com/questions/325416
复制