![]() |
||
Regular Member
![]() ![]() 加入日期: Nov 2006
文章: 69
|
![]() 剛剛興致來了抓了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秒) ![]() ![]() |
|||||||
![]() |
![]() |
Basic Member
加入日期: May 2013 您的住址: 台灣
文章: 26
|
你這是哪種CPU, 居然可以跑出10倍以上的速度?
自己編譯MAME有比直接從網路下的好嗎? |
||
![]() |
![]() |
Senior Member
![]() ![]() ![]() 加入日期: Dec 2002
文章: 1,370
|
如果你先編譯 -j 1, 再編譯 -j 8
那 -j 8 會受益於 cache 而更早完成, 所以才會有 13 倍的效果. 建議多跑幾次比較 cache 後的結果比較有意義. 另外, intel 的 Hyper-Threading 功能, 跟原生 CPU core 差距頗大 一般我會估 0.25倍, 所以 i7 4核會設 6 job, i3 2核 會設 3 job
__________________
要討論也要找能溝通的, 跟狂吠的狗溝通只是浪費時間. 每日一句 : 很多不等於多數,也不等於少數 |
![]() |
![]() |