为什么我的案例Matlab 64位更长?

时间:2010-08-25 13:38:33

标签: matlab

为了提高我的程序matlab的及时性,我得到了Windows 7(64位)和64位Matlab。我已经安装在硬盘的分区上。不幸的是,我很震惊地看到64位Matlab的程序执行时间更长。我不知道是什么问题。知道我有一个核心2 Quad处理器和3GB RAM。

2 个答案:

答案 0 :(得分:4)

通常,64位不会使代码更快。它只是让你访问更多的内存。只有在32位进程中受内存限制时,您的代码才会加速。在Matlab中,这通常会导致Out Of Memory错误,而不是减速。而且由于你只有3 GB,你可能没有达到4 GB的32位限制。所以你可能不应该期待加速。然而,放缓是令人惊讶的。

您使用的是面向对象的Matlab,尤其是旧的(前MCOS)风格吗? Windows上的64位Matlab中存在一个已知错误,它会增加方法调度的开销。 OO代码在64位Matlab中运行速度比32位Matlab慢,随着方法调用密度的增加,速度减慢。在我的代码库(大量OO)中,它大约是2倍的减速。这就是你所看到的幅度。

Is MATLAB OOP slow or am I doing something wrong?。 (在那里切向讨论。)

您仍然可以在64位Windows上运行32位Matlab。 (虽然它没有得到官方支持。)这种安排不会受到调度减速方法的影响,而且它会获得4 GB的虚拟内存,而不是32位操作系统下的2 GB。 (如果你有> = 4GB RAM,可能只有用。)如果32位在同一台机器上运行得更快,你应该把它作为一个bug报告给MathWorks;提及它的用户越多,修复的可能性就越大。

答案 1 :(得分:2)

Matlab有一个内置的探查器,它可以告诉你每个函数被调用多少次以及执行需要多长时间。您应该使用分析器找出瓶颈的位置,i。即你的程序的哪些部分花费最多的时间。

如果在32位和64位平台上执行此操作,您可能会发现64位版本速度较慢的原因。