作者ResolaQQ (ResolaQQ)
看板Python
標題[心得] Benchmark
時間Thu Dec 3 23:11:19 2015
MOS6502 模擬器跑 Atari2600 的兩個遊戲所得到的結果
測試環境是 Windows x64,Intel 2.8GHz
C 版本是從底下這兒來的
http://codegolf.stackexchange.com/questions/12844/emulate-a-mos-6502-cpu
Python 跟 RPython 版本都是 Py65 的修改版
結果如下
Python32 < Python64 < PyPy < PyPy3 < RPython O0 < C O0 < RPython O3 < C O3
最慢跟最快差了快 200 倍,比較需要注意的是 PyPy3 硬是比 PyPy 快了不少
Z:\>py -2.7-32 test.py
Filename: Alien.bin
Frequency: 3404332
Counter: 11076043
Second: 3.253514
Instruction: 1000000
Cycle: 3055614
MHz: 0.939173
Z:\>py -2.7-32 -O test.py
Filename: Alien.bin
Frequency: 3404332
Counter: 11018579
Second: 3.236635
Instruction: 1000000
Cycle: 3055614
MHz: 0.944071
Z:\>py -2.7-64 test.py
Filename: Alien.bin
Frequency: 3404332
Counter: 9756155
Second: 2.865806
Instruction: 1000000
Cycle: 3055614
MHz: 1.066232
Z:\>py -2.7-64 -O test.py
Filename: Alien.bin
Frequency: 3404332
Counter: 9849147
Second: 2.893122
Instruction: 1000000
Cycle: 3055614
MHz: 1.056165
Z:\>pypy test.py
Filename: Alien.bin
Frequency: 3404332
Counter: 259815659
Second: 76.319131
Instruction: 500000000
Cycle: 1527849101
MHz: 20.019215
Z:\>pypy -O test.py
Filename: Alien.bin
Frequency: 3404332
Counter: 259164404
Second: 76.127829
Instruction: 500000000
Cycle: 1527849101
MHz: 20.069522
Z:\>pypy3 test.py
Filename: Alien.bin
Frequency: 3404332
Counter: 134081417
Second: 39.385529
Instruction: 500000000
Cycle: 1527849101
MHz: 38.792144
Z:\>pypy3 -O test.py
Filename: Alien.bin
Frequency: 3404332
Counter: 137038840
Second: 40.254253
Instruction: 500000000
Cycle: 1527849101
MHz: 37.954974
Z:\>test-c--opt0
Filename: Alien.bin
Frequency: 3404332
Counter: 13574028
Second: 3.987281
Instruction: 100000000
Cycle: 305570011
MHz: 76.636188
Z:\>test-c--opt3
Filename: Alien.bin
Frequency: 3404332
Counter: 6157551
Second: 1.808740
Instruction: 100000000
Cycle: 305570011
MHz: 168.940828
Z:\>test-O0
Filename: Alien.bin
Frequency: 3404332
Counter: 10799775
Second: 3.172362
Instruction: 100000000
Cycle: 305570011
MHz: 96.322541
Z:\>test-O3
Filename: Alien.bin
Frequency: 3404332
Counter: 5553513
Second: 1.631308
Instruction: 100000000
Cycle: 305570011
MHz: 187.315987
----------------------------------------------------------------------------
Z:\>py -2.7-32 test.py
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 11083492
Second: 3.255702
Instruction: 1000000
Cycle: 2900865
MHz: 0.891010
Z:\>py -2.7-32 -O test.py
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 11094981
Second: 3.259077
Instruction: 1000000
Cycle: 2900865
MHz: 0.890088
Z:\>py -2.7-64 test.py
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 9831143
Second: 2.887833
Instruction: 1000000
Cycle: 2900865
MHz: 1.004513
Z:\>py -2.7-64 -O test.py
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 9868391
Second: 2.898775
Instruction: 1000000
Cycle: 2900865
MHz: 1.000721
Z:\>pypy test.py
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 503536743
Second: 147.910587
Instruction: 500000000
Cycle: 1449563451
MHz: 9.800268
Z:\>pypy -O test.py
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 512924673
Second: 150.668229
Instruction: 500000000
Cycle: 1449563451
MHz: 9.620897
Z:\>pypy3 test.py
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 178400259
Second: 52.403896
Instruction: 500000000
Cycle: 1449563451
MHz: 27.661368
Z:\>pypy3 -O test.py
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 179105472
Second: 52.611047
Instruction: 500000000
Cycle: 1449563451
MHz: 27.552454
Z:\>test-c--opt0
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 13233133
Second: 3.887145
Instruction: 100000000
Cycle: 289918928
MHz: 74.584022
Z:\>test-c--opt3
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 6342670
Second: 1.863117
Instruction: 100000000
Cycle: 289918928
MHz: 155.609591
Z:\>test-O0
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 10878511
Second: 3.195491
Instruction: 100000000
Cycle: 289918929
MHz: 90.727517
Z:\>test-O3
Filename: AirSeaBattle.bin
Frequency: 3404332
Counter: 5593494
Second: 1.643052
Instruction: 100000000
Cycle: 289918929
MHz: 176.451479
--
放著養蚊子的部落格
http://resolaqq.blogspot.tw
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.246.166.44
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1449155488.A.F3F.html
→ ResolaQQ: 補一下,只寫 Alien.bin 這個遊戲的 12/06 22:35
→ ResolaQQ: C -O0 by dll 98.37 MHz 12/06 22:36
→ ResolaQQ: C -O3 by dll 154.63MHz 12/06 22:36
→ ResolaQQ: RPython -O0 by dll, memory int list 77.79 MHz 12/06 22:37
→ ResolaQQ: RPython -O3 by dll, memory int list 112.97 MHz 12/06 22:38
→ ResolaQQ: RPython -O0 by dll, memory rffi.CArray 95.74 MHz 12/06 22:38
→ ResolaQQ: RPython -O3 by dll, memory rffi.CArray 111.74 MHz 12/06 22:38
→ ResolaQQ: 用 dll 會吃掉一部份速度,C 剩 80%,RPython 剩 66% 12/06 22:41
→ ResolaQQ: 不想重寫也只能將就了,反正還是比訓練好的 PyPy 快三倍 12/06 22:42