|
本帖最后由 edisonx 于 2012-11-9 18:34 编辑
Hi , 各位先進好
小弟對於 AU 之記憶體 (memory) 管理與計算效能上有些存疑,
故拿最經典的測試例子做為測試範例。
大型矩陣相乘。
小弟分別以 C 與 AutoIt 撰之,發現效能上差異實在是有點吃驚,
在前半段產生亂數塞入矩陣 (matrix) 效能便差了數 10 倍,
而當計算 1000 x 1000 矩陣 (matrix) 相乘時,
C 跑了 2 秒左右, AutoIt 跑了 半小時還沒跑完 ( 所以就關了 )。
有興趣可下載以下附件 ( 含 C 與 AU3 之 source code、執行檔 )
稍說明,裡面 NRMat.au3 是 Matrix UDFs,
但由於自己在測 Matrix Multiple 時發現效能和 C 實在差太多,
所以停住不打算繼續開發。
MatMulAU3.exe --> 以 AU3 寫的 1000 * 1000 矩陣相乘,有兩個測時點,第一個測時點為配置記憶體、塞亂數所花時間;第二個測時點為計算 塞亂數 + Matrix Multiple 時間,以 MsgBox 方式顯示。
MatMulC.exe ---> 以 C 寫之 1000 x 1000 矩陣相乘,編譯參數沒加任何優化,最後結果輸出於 MatMulC.txt,發現普遍都是 2 秒左右完成。
想請教,是否為我於程式碼寫得不好才導致這情況?
又或許只是更確定一件事: AU 開發方便,但卻著實犧牲了許多效能?
謝謝各位先進不吝賜教,感激不盡。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入
×
|