Leaps and bounds: Analysing WebAssembly's performance with a focus on bounds checking

  • Raven Szewczyk (Creator)
  • Kim Stonehouse (Creator)
  • Antonio Barbalace (Creator)
  • Tom Spink (Creator)



Leaps and bounds: Analysing WebAssembly’s performance with a focus on bounds checking - Source code and experimental data bundle

This is the code&data bundle accompanying the IISWC2022 paper "Leaps and bounds: Analysing WebAssembly’s performance with a focus on bounds checking" by Raven Szewczyk, Kim Stonehouse, Antonio Barbalace and Tom Spink.

The bundle is archived in the wasmbounds-oss-v1.0.0.tar.gz file, and the other tar.gz files are pre-built Docker-compatible OCI container images that can be used to reproduce benchmark results on new machines.

Contents of the main bundle:

graphs/plots: Plots used in the papergraphs/wasmbounds.Rmd, graphs/knitall.R: R source code used to generate the plotsruns/kone.csv, runs/sole.csv, runs/riscv.csv: Raw experimental data used to generate the plots in the CSV (comma-separated value) format (kone = x86_64 machine, sole = armv8 machine, riscv = Nezha D1 RISC-V development board)
These are gzipped in the GitHub version of this archive due to file size limitations, make sure to unzip them before using any of the scripts
patches-{polybenchc,speccpu2017}.patch: Our patches to the Polybench/C and SPECcpu2017 benchmark suites to make them compatible with WebAssemblypatches-{nodev8,wasm3,wasmtime,wavm}.patch: Our patches to the WebAssembly runtimes evaluated in the paper adding support for alternative bounds checking methods and integrating them with our benchmarking harnessrunner-src/*, CMakeLists.txt, CMakePresets.json: C++ Source code for the benchmarking harness, including the UserfaultFD memory arena managerstatmon/*: Rust source code for the system resource usage and CPU performance counter monitoring tool used to generate the data for the paperscripts/*, *.sh: Utility scripts for compiling the benchmark suites, harness and running benchmarksDockerfile.*, Bakefile-*.hcl: Docker container definitions for reproducible benchmark running conditionscpp-libs/fmt, node-v18.2.0, polybench-c-4.2, wasm3-0.5.0, wasmtime, WAVM - already patched open source third party libraries and WebAssembly runtimes used in the paperNot included: spec-cpu - an installation of the SPECcpu2017 benchmark suite, not included due to licensing restrictions but patches are provided for users who hold a license

More information in the README.MD file in the bundle.
Date made available2022
  • Leaps and bounds: analysing WebAssembly’s performance with a focus on bounds checking

    Szewczyk, R., Stonehouse, K., Barbalace, A. & Spink, T., 6 Nov 2022, Proceedings of the 2022 IEEE International Symposium on Workload Characterization. Online: IEEE, p. 256-268 13 p.

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

    Open Access
    2 Citations (Scopus)
    3 Downloads (Pure)

Cite this