edisonx 发表于 2012-11-6 23:57:38

About AutoIt Effective[已解决]

本帖最后由 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 開發方便,但卻著實犧牲了許多效能?
謝謝各位先進不吝賜教,感激不盡。

netegg 发表于 2012-11-9 01:30:08

纯个人理解,其实原因是多方面的,作为脚本语言与编译语言在效率上肯定有差距,其次是算法上,另外如果使用内嵌asm的话或许会快些,具体算法可能需要自己想办法了
页: [1]
查看完整版本: About AutoIt Effective[已解决]