vak: (Default)
[personal profile] vak
В продолжение темы: меряем эффективность 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
Запускаем:
Nanoseconds for one run through Dhrystone: 25.4    
Million Dhrystones per Second: 39.351
DMIPS: 22396.8
Получаем скорость 16124.6 на Wasm по сравнению с 22396.8 на родном Интеле. То есть потеря 28% производительности: неплохо! Вполне терпимо для для виртуальной машины такой сложности.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org