作者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
推 megaman1206:"XD 05/03 19:28
推 euleramon:請問你指的overhead是說重覆做同樣動作的次數嗎?? 05/03 21:13
→ GreatShot:overhead你可以當作是一種..額外的負擔 05/03 21:33
推 Epimenides:overhead就是成本的意思 另推測試圖 清楚明白 05/05 18:16