You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: bench.md
+6-1Lines changed: 6 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,12 @@
1
1
This file documents the coremark bench results to document performance improvements over time.
2
2
- ac6b813: avg ≈ 500 (introduced benchmarking without criterion)
3
-
-current: avg = 529.773949, n = 20 (improved leb128 handling with unsafe)
3
+
-5f4af0c: avg = 529.773949, n = 20 (improved leb128 handling with unsafe)
4
4
- we try to avoid unsafe code in module/validator/instance directly
5
+
- current: avg = 810.367084, n = 20 (use a dense offset table instead of hashmap, better leb128, and cold path hinting)
6
+
- rust hashmaps are apparently very bad, this might be because of our memory access pattern, when we interpret the control op codes (corresponding to side table entries) they are kind of accessed sequentially, so even btreemap yields better results
7
+
- current design: two-level indirection (one array covering all possible code indices and directing them to a densely packed side table)
8
+
- we also try to not use nightly features... making error creation cold path is a really elegant solution in this regard
9
+
- repr(C) for the SideTableEntry struct caused mysterious improvements, not sure if it is a fluke
0 commit comments