Instance Variable Table Benchmark for mruby

GitHub

Memory Usage

iv_tbl サイズごとのメモリー使用量 (mrb_mallocmrb_calloc に実際に指定した値) の計測結果です。

64-bit Word-boxing
64-bit NaN-boxing
64-bit No-boxing
32-bit Word-boxing
32-bit No-boxing
iv_tbl size: --
2.1.2:
--
kB
Baseline:
--
kB
New:
--
kB
Drag and drop to zoom in (double-click resets)

ハッシュバケットの構造体にパディングがあった 64-bit CPU では 0.4倍-0.85倍程度になっています。構造体のパディングがなかった 32-bit CPU では8バイト減っています。32-bit No-boxing は計測環境では double が4バイトアライメントであるため両実装に差がでていませんが、8バイトアライメントである環境 (Windowsなど) では差がでると思います。

なお、メモリー使用量の最大値は mruby 2.1.2 は上図の値と同じですが、mruby 3 ではハッシュバケットの拡大時に新しい領域にコピーするため最大値は上図の値より大きくなります。