吧务
level 11
situxuming
楼主
看到有吧友求MMA编程提速技巧,就想到这篇文章了。这篇是Wolfram Blog上的一篇文章http://blog.wolfram.com/2011/12/07/10-tips-for-writing-fast-mathematica-code/,之后在网上看到有人将之翻译过来了,就转载过来给各位吧友看看吧~此翻译文章的原址是http://www.cnblogs.com/mymma/archive/2012/08/27/2659007.html
当人们跟我抱怨说Mathematica不够快时,我一般会叫他们去仔细瞧瞧那些令人恼怒的代码.跑得慢的原因通常不是Mathematica的性能问题,而是使用方式不太合适.我想我应该分享一些我在优化Mathematica代码时使用的技巧.
1.如果可能话,使用机器精度数并尽量提早使用
如我所见,那些漫不经心的程序员所编写的缓慢的代码的一个共同特点是,一下子让Mathematica考虑到了太多的琐事而忽略自己的实际需求.不必要的附加计算是导致代码缓慢的最普遍原因.
大部分的数值计算软件中没有这些附加计算,1/3和0.33333333333333被认为是相等的.这些附加计算在你遇到一些复杂难缠的计算时是很有用的.但是在大部分的计算任务中,浮点运算的机器精度已经足够好,更重要的是,计算速度更快.任何小数位数小于16位的十进制输入都会自动被Mathematica按机器精度处理,所以,如何你的计算原则是速度优先,那么就尽可能使用机器精度的小数而不是精确形式(例如1/3).这里有一个简单的例子说明直接使用浮点数进行机器精度的运算会比先用绝对精确形式计算然后转换为小数的方法快50倍左右.当然,我们这个例子里得到的结果是相同的.







2013年02月28日 03点02分
1
当人们跟我抱怨说Mathematica不够快时,我一般会叫他们去仔细瞧瞧那些令人恼怒的代码.跑得慢的原因通常不是Mathematica的性能问题,而是使用方式不太合适.我想我应该分享一些我在优化Mathematica代码时使用的技巧.
1.如果可能话,使用机器精度数并尽量提早使用
如我所见,那些漫不经心的程序员所编写的缓慢的代码的一个共同特点是,一下子让Mathematica考虑到了太多的琐事而忽略自己的实际需求.不必要的附加计算是导致代码缓慢的最普遍原因.
大部分的数值计算软件中没有这些附加计算,1/3和0.33333333333333被认为是相等的.这些附加计算在你遇到一些复杂难缠的计算时是很有用的.但是在大部分的计算任务中,浮点运算的机器精度已经足够好,更重要的是,计算速度更快.任何小数位数小于16位的十进制输入都会自动被Mathematica按机器精度处理,所以,如何你的计算原则是速度优先,那么就尽可能使用机器精度的小数而不是精确形式(例如1/3).这里有一个简单的例子说明直接使用浮点数进行机器精度的运算会比先用绝对精确形式计算然后转换为小数的方法快50倍左右.当然,我们这个例子里得到的结果是相同的.


































