ssnbox 发表于 2008-4-2 15:57

Matlab的效率


   感谢yufeiqun2008对吕博士CC算法的说明,帮了我很大的忙。吕博士一个小疏忽(也怪自己没有深入理解相空间重构的本质),让我的程序停滞不前3个月,昨天看了你的说明,也才明白子序列不用T延时,太精彩了,真是只隔一层纱。
   我也把自己的想法说出一点来:快速计算(两分钟算完CC)。CC算法最大问题是耗时,尤其是用MATLAB来时,这点也是MATLAB的短板,我想近几年也不会避免的。原因很简单:简单的操作下是低效的内存使用。

MATLAB为方便各种人士使用,甚至号称不需懂程序语言的人也可用。事实也是如此,的确好用。但在MATLAB做大型计算(CC可能不算大)时,大量的内存操作则要了它的命。我们在程序中无意间动态定义一个大的数组或小的数组,在循环计算时不断消耗计算机内存(操作系统发现内存不够时就会将现有内存信息交换到硬盘,以腾出空间,完后再换回来。内存还不够则就从硬盘上虚拟内存,但是速度是硬盘的速度),最后导致大量时间消耗在内存的存取上,而不是真正的计算上。
   有时,错觉会让我们相信MATLAB正在计算,事实是正在读取内存。CC算法的计算复杂程序并不高,MATLAB对内存的作用效率有时会取决于人员对算法的调整与内存软硬件的理论上,这是很要命的。举个例子,在函数传递数组的过程中,函数内外存取的数组本可以是同一个内存空间,但实际却是一个复制品,这样就消耗了时间。好比你想参观朋友的房子,肯定不想让朋友再造个一模一样的房子让你看吧,你只需进入朋友的房子即可。
目前,如果想快速计算,用MATLAB与VC++结合是一个好的选择。这是强者的结合,MATLAB在函数、算法功能方面有优势,VC++在内存操作上也是无人能及的。如果你只关注计算过程与结果,VC++是最好的选择,它并不要求你掌握好VC的复杂内容与技艺,甚至你只要懂C语言就行了,不过你不能开发VC++带界面的程序而已。

无水1324 发表于 2008-4-2 17:05

回复 楼主 的帖子

楼主能否给个链接是哪个帖子,也方便大家联系起来看,另外我也好给她/他加分

多情清秋 发表于 2008-4-3 11:45

http://forum.vibunion.com/forum/viewthread.php?tid=57387
页: [1]
查看完整版本: Matlab的效率