作者cole945 (躂躂..)
看板C_Sharp
标题Re: [问题] 练习题
时间Thu May 3 17:20:54 2007
※ 引述《GreatShot (我要拿Ph.D.!!!)》之铭言:
: : 另外,如果要算的次方数很大的话
: : (应该到五次或是六次就应该呼叫了..)
: : 建议呼叫 Math.Pow 会快上很多....
: : 里面用的算法比你自己写的连乘法好很多..
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 这点跟我认知很不一样
: 我没看过Math.Pow()的source所以不敢说它演算法好不好
: 我只能作实验来观察
: source如下
我利用了你的程式~
"单" 测连乘和Math.Pow()在1~1000次方时连做100次运算..
我把结果绘成图表
http://moon.cse.yzu.edu.tw/~s922254/lala/fig.png
http://moon.cse.yzu.edu.tw/~s922254/lala/app.rar (程式)
x轴是次方, y轴是时间(us)
红色是用 Math.Pow计算
蓝色是 int 的连乘 (a*a*a*a....)
绿色是 double 的连乘
结果是 Math.Pow所需的时间一直都蛮固定的..
我想 Math.Pow 应该有做到一定程度的最佳,
而且甚至可能是native code, 所以呼叫的overhead较大..
(其实我只是看图说故事orz)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.145.125
1F:推 megaman1206:"XD 05/03 19:28
2F:推 euleramon:请问你指的overhead是说重覆做同样动作的次数吗?? 05/03 21:13
3F:→ GreatShot:overhead你可以当作是一种..额外的负担 05/03 21:33
4F:推 Epimenides:overhead就是成本的意思 另推测试图 清楚明白 05/05 18:16