AtherosとMediaTek(旧Ralink)は共にMIPSベースのSOCを作っていますが、AtherosのSOCがmrubyで極端にパフォーマンスが悪いのでunixbench 4.1で性能比較をしてみました。
ZRouterでunixbenchをビルドできるようにして、unixbenchのindexの中のfile関係を除いた数字を見てみました。
# unixbench dhry2reg whetstone-double shell execl pipe context1 spawn syscall
- AR9310の結果
INDEX VALUES
TEST BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 492487.4 42.2
Double-Precision Whetstone 55.0 5.0 0.9
Execl Throughput 43.0 38.2 8.9
Pipe Throughput 12440.0 80802.4 65.0
Pipe-based Context Switching 4000.0 27217.2 68.0
Process Creation 126.0 280.8 22.3
Shell Scripts (8 concurrent) 6.0 14.0 23.3
System Call Overhead 15000.0 63838.0 42.6
=========
FINAL SCORE 20.7
- MT7620の結果
INDEX VALUES
TEST BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 724551.6 62.1
Double-Precision Whetstone 55.0 7.6 1.4
Execl Throughput 43.0 75.8 17.6
Pipe Throughput 12440.0 115928.7 93.2
Pipe-based Context Switching 4000.0 35735.6 89.3
Process Creation 126.0 438.2 34.8
Shell Scripts (8 concurrent) 6.0 26.0 43.3
System Call Overhead 15000.0 113341.8 75.6
=========
FINAL SCORE 33.1
MT7620のクロックは580MHzでAR9310は400MHzです。ほぼほぼクロックの差に近い数字のように見えます。
ところがこのSOCでfib(32)をawkやmrubyを実行するとかなり違いが出てしまいます。
SOC | awk | mruby |
---|---|---|
MT7620 | 44sec | 14sec |
AR9310 | 106sec | 71sec |
最初エンディアンがらみのmrubyを疑って、次にメモりコントローラーを疑ったのですが、どうも両方とも外れているような気がします。
amd64でawkとmrubyを比べるとawkの方が早かったりします。もうなんだかよくわかりません。何が原因なんでしょうか。。。