L1VM - benchmarks
Ich schrieb zwei Benchmarks für die L1VM und für C. In beiden wird in einer Schleife Berechnungen ausgeführt. Einmal mit Integer Ganzzahlen und einmal mit Fließkommazahlen.
Die VM verwendet bei beidem den JIT-Compiler zur Codegenerierung.
Alle Benchmarks liefen auf meinem Lenovo Z50-70.
Hier sind die Ergebnisse: C Integer:
$time ./int-test >/dev/null 2>&1 real 0m7,659s user 0m7,568s sys 0m0,088s
L1VM Integer:
$time vm/l1vm prog/jit-test >/dev/null 2>&1 real 0m14,394s user 0m14,238s sys 0m0,156s
Wie man sehen kann liegt der Faktor für die VM bei etwa 2.
Wie sieht es bei den Fließkommazahlen aus?
C Fließkomma:
$time ./double-test >/dev/null 2>&1 real 1m3,400s user 1m3,249s sys 0m0,148s
L1VM Fließkomma:
$time vm/l1vm prog/jit-test-double >/dev/null 2>&1 real 1m11,828s user 1m11,704s sys 0m0,120s
Wie man sieht liegt hier der Faktor für die VM bei 1,13! Was ich für den besten Fall halte, den man erreichen kann.
Update: 1.3.2019: Ich erstellte mit “perf” Statistiken:
C Fließkomma:
$perf stat ./double-test >/dev/null Performance counter stats for './double-test': 63.356,60 msec task-clock # 1,000 CPUs utilized 154 context-switches # 2,431 M/sec 1 cpu-migrations # 0,016 M/sec 60 page-faults # 0,947 M/sec 169.653.354.771 cycles # 2677778,818 GHz 327.538.618.264 instructions # 1,93 insn per cycle 66.774.169.451 branches # 1053951787,534 M/sec 217.507.372 branch-misses # 0,33% of all branches 63,359850369 seconds time elapsed 63,265225000 seconds user 0,091995000 seconds sys
L1VM Fließkomma:
$perf stat vm/l1vm prog/jit-test-double >/dev/null Performance counter stats for 'vm/l1vm prog/jit-test-double': 71.950,66 msec task-clock # 1,000 CPUs utilized 32 context-switches # 0,445 M/sec 0 cpu-migrations # 0,000 K/sec 559 page-faults # 7,769 M/sec 192.391.625.303 cycles # 2673962,826 GHz 350.544.144.381 instructions # 1,82 insn per cycle 69.025.626.311 branches # 959355473,398 M/sec 216.618.770 branch-misses # 0,31% of all branches 71,952339636 seconds time elapsed 71,835179000 seconds user 0,115998000 seconds sys
Die Benchmark Sourcen sind hier: Benchmarks-01