Skip to content

Instantly share code, notes, and snippets.

@jjo
Last active November 17, 2024 03:58
https://benjdd.com/loops/ (from https://x.com/BenjDicken/status/1857449788893286484) in C and Go, Go version built natively and as WASM

Summary:

how walltime CPU MEM obs
build-c-native/main 0:01.10 99% 1408k
build-c-wasm/main.wasm 0:07.26 99% 37888k with wasmer
build-c-wasm/main.wasm 0:07.34 99% 15232k with wasmtime
build-go-native/main 0:05.80 100% 1536k
build-go-wasm/main.wasm 0:05.61 99% 55388k with wasmer
build-go-wasm/main.wasm 0:05.69 97% 28768k with wasmtime
  • Go -> WASM compiler: (big)go
  • C -> WASM compiler: emcc

See below z_cli_output.md file.

  • make build
BUILD: build-c-native/main
+ cc -O1 -o build-c-native/main main.c

BUILD: build-c-wasm/main.wasm
+ emcc -s WASM=1 -o build-c-wasm/main.wasm main.c

BUILD: build-go-native/main
+ go build -o build-go-native/main main.go

BUILD: build-go-wasm/main.wasm
+ env GOOS=wasip1 GOARCH=wasm go build -o build-go-wasm/main.wasm main.go
  • make run
RUN: build-c-native/main                                                                                                                                      
+ /usr/bin/time build-c-native/main
1.10user 0.00system 0:01.10elapsed 99%CPU (0avgtext+0avgdata 1408maxresident)k
0inputs+0outputs (0major+111minor)pagefaults 0swaps

RUN: build-c-wasm/main.wasm with `wasmer`
+ /usr/bin/time wasmer run build-c-wasm/main.wasm
7.24user 0.01system 0:07.26elapsed 99%CPU (0avgtext+0avgdata 37888maxresident)k 
0inputs+0outputs (0major+2036minor)pagefaults 0swaps

RUN: build-c-wasm/main.wasm with `wasmtime`
+ /usr/bin/time wasmtime run build-c-wasm/main.wasm
7.31user 0.00system 0:07.34elapsed 99%CPU (0avgtext+0avgdata 15232maxresident)k 
0inputs+8outputs (0major+988minor)pagefaults 0swaps

RUN: build-go-native/main 
+ /usr/bin/time build-go-native/main
5.80user 0.02system 0:05.80elapsed 100%CPU (0avgtext+0avgdata 1536maxresident)k 
0inputs+0outputs (0major+213minor)pagefaults 0swaps

RUN: build-go-wasm/main.wasm with `wasmer`
+ /usr/bin/time wasmer run build-go-wasm/main.wasm
5.53user 0.04system 0:05.61elapsed 99%CPU (0avgtext+0avgdata 55388maxresident)k 
0inputs+0outputs (0major+9314minor)pagefaults 0swaps

RUN: build-go-wasm/main.wasm with `wasmtime`
+ /usr/bin/time wasmtime run build-go-wasm/main.wasm
5.51user 0.03system 0:05.69elapsed 97%CPU (0avgtext+0avgdata 28768maxresident)k 
0inputs+8outputs (0major+7155minor)pagefaults 0swaps
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment