2

我想加快一些涉及循环的 matlab 代码。一个常见的解决方案是用 C 编写循环并从 matlab 中调用它。但是,我想知道是否可以通过在 Java 中实现循环来获得类似的好处——也许即时编译让它更快?

4

2 回答 2

4

在开始使用外部代码之前:您是否预先分配了变量?你能矢量化你的循环吗?尽管多年来 Matlab 即时编译器已经变得更好,但仍然存在向量化带来显着改进的情况。另外,请注意,相当多的 Matlab 函数(在编辑器中打开它们时看不到代码的函数)是用 C 或 Fortran 实现的,因此您可能不会观察到显着的速度提升。

如果您无法通过在 Matlab 中更好地编写 Matlab 代码来加速您的 Matlab 代码,并且如果重新实现确实可能会给您带来任何好处,那么 C 可能是最快的,尽管 Java 可能不会落后太多(再次取决于关于你想要加速的代码 - 如果你在这里发布它可能是一个好主意)。如果您比 C 更熟悉 Java,我建议您尝试走 Java 路线。

于 2010-10-22T15:27:09.207 回答
1

SO上的人们总是渴望帮助优化代码。通过profiling发现耗时的代码部分后,您可以在此处发布代码摘录。

一个非凡的 MATLAB 功能是它能够执行 JAVA 脚本。在 JAVA 中编写您的“优化”代码并在 MATLAB 中实例化该类。使用 C 你被迫编写一个包装器,这不是无缝的。

于 2010-10-22T17:03:35.187 回答