Hi @backtracking and @sim642,
@sim642 recently posted intriguing results on the performance of the Goblint static analyser (which uses ocaml-hashcons) over recent OCaml versions. I am working on the OCaml runtime, and recently I have been hacking on weak pointers and ephemerons. I am interested in benchmarks I could use to understand the performance of the runtime and see if some aspects could be improved. (For example I notice that ocaml-hashcons uses Weak.blit on bucket resizing, how good is its implementation and would improvements there have measurable impact?) Unfortunately "running all SV-COMP 2026 benchmarks on Goblint" is a bit scary, it would be nice to have a simpler way to evaluate runtime changes that could be relevant to hashconsing users.
What would be a simple synthetic benchmark of using ocaml-hashcons, that would maybe run for ~1s on a typical machine, which I could use for profiling and evaluating runtime changes? Would it be reasonable to provide such a benchmark as part of the ocaml-hashcons distribution, or somewhere else?
Hi @backtracking and @sim642,
@sim642 recently posted intriguing results on the performance of the Goblint static analyser (which uses ocaml-hashcons) over recent OCaml versions. I am working on the OCaml runtime, and recently I have been hacking on weak pointers and ephemerons. I am interested in benchmarks I could use to understand the performance of the runtime and see if some aspects could be improved. (For example I notice that ocaml-hashcons uses
Weak.bliton bucket resizing, how good is its implementation and would improvements there have measurable impact?) Unfortunately "running all SV-COMP 2026 benchmarks on Goblint" is a bit scary, it would be nice to have a simpler way to evaluate runtime changes that could be relevant to hashconsing users.What would be a simple synthetic benchmark of using ocaml-hashcons, that would maybe run for ~1s on a typical machine, which I could use for profiling and evaluating runtime changes? Would it be reasonable to provide such a benchmark as part of the
ocaml-hashconsdistribution, or somewhere else?