剛剛興致來了抓了MAME 0.148的程式碼想要自己Compile, 用預設的make跑下去才發現沒有開多工(只有單執行緒), 居然要超過半小時.
我決定測一下讓全部核心都投入Compile的差異:
需要的檔案:
(1)MinGW MAME package:
MinGW MAME For Windows 32 bit Only
MinGW MAME For Windows 64 bit Only
這是需要編譯目前MAME的編譯包, 包含所有需要的工具根程式庫, 看你需要編譯成32bit 還是64bit Windows下載(選一就好)
(2)MAME 0.148 source code
MAME 0.148 official
雙重壓縮過的MAME原始碼(最小的檔案大小)
(3)timemame MAME計時程式 (附加檔)
用來顯示花了多少時間跑make
準備工作:
(1)安裝MinGW for MAME
(a)在某磁碟機Z的根目錄建立mingw的資料夾
(b)將之前下載的MinGW MAME package 解壓至\mingw\ 底下
(2)安裝MAME 0.148 程式碼
(a)在某磁碟機Z的根目錄建立mame_source的資料夾(名稱自訂也可以)
(b)將MAME 0.148 程式碼解壓至mame_source的資料夾(第一次會解出mame.zip, 需要再解壓一次)
(3)解壓timemame到mame source的資料夾下
編譯:
(1)開啟 cmd.exe (到完成測試前都不要關閉, 要不然PATH需要重設)
(2)設定mingw compiler的路徑, 輸入 Set PATH=Z:\mingw\mingw64-w64\bin (假設X:是安裝mingw的路徑. 如果裝的是32bit版本輸入 Set PATH=Z:\mingw\mingw64-w32\bin
(3)變更路徑到mame程式碼資料夾下 CD /D Z:\mame_source (假設 Z:\mame_source是安裝MAME程式碼的位置
(4)執行"timemame -j x" x 是你的電腦的CPU邏輯核心數量. A控的FX-8350的話就是timemame -j 8, I粉的i7-3770K也是 timemame -j 8 如果只輸入timemame而不加任何參數就是只使用單一執行緒(-j x 就是要GNU make跑 x個job)
(5)跑完就可以看得到一共跑了多久, 如果需要重跑請先刪除obj資料夾(compile時產生的)
要更上一層的話可以考慮全部在RAMDISK內執行
編譯MAME64的結果:
單一執行緒(2200秒)
多工(160秒)
