The tupled definitions of the various sized get/set functions appear to prevent bigstring primitives from being inlined into user code by the baseline compiler. Pushing the branch on endianness into each function (like in bytes.ml) appears to fix this, and gives a speedup of up to 2x on a simple benchmark reading integers in a tight loop (using ocamlopt 4.14.0 on x64 linux).
The tupled definitions of the various sized get/set functions appear to prevent bigstring primitives from being inlined into user code by the baseline compiler. Pushing the branch on endianness into each function (like in bytes.ml) appears to fix this, and gives a speedup of up to 2x on a simple benchmark reading integers in a tight loop (using ocamlopt 4.14.0 on x64 linux).