Dhrystone на WebAssembly
2022-08-07 17:04![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
В продолжение темы: меряем эффективность WebAssembly. Берём известный тест Dhrystone и компилируем для WASI:
Запускаем:$ make
/opt/wasi-sdk-16.0/bin/clang -O -DNRUNS=100000000 -c -o dhry_1.o dhry_1.c
/opt/wasi-sdk-16.0/bin/clang -O -DNRUNS=100000000 -c -o dhry_2.o dhry_2.c
/opt/wasi-sdk-16.0/bin/clang -o dhrystone dhry_1.o dhry_2.o
$ file dhrystone
dhrystone: WebAssembly (wasm) binary module version 0x1 (MVP)
Для сравнения скомпилим в родной бинарник:Nanoseconds for one run through Dhrystone: 35.3
Million Dhrystones per Second: 28.331
DMIPS: 16124.6
Запускаем:$ make
cc -O -DNRUNS=100000000 -c -o dhry_1.o dhry_1.c
cc -O -DNRUNS=100000000 -c -o dhry_2.o dhry_2.c
cc -o dhrystone dhry_1.o dhry_2.o
$ file dhrystone
dhrystone: Mach-O 64-bit executable x86_64
Получаем скорость 16124.6 на Wasm по сравнению с 22396.8 на родном Интеле. То есть потеря 28% производительности: неплохо! Вполне терпимо для для виртуальной машины такой сложности.Nanoseconds for one run through Dhrystone: 25.4
Million Dhrystones per Second: 39.351
DMIPS: 22396.8