Skip to content

Scale and portability

What the state operations cost at a million rows, and whether every platform produces the same bytes. The timings used one arm64 CPU with the neon backend and include Python and process memory; they are not a cross-machine speed comparison.

798kquant encodes per second · 768 dimensions
49 msdiff · 1M rows, 1% changed
1.1 sfull gate · 1M rows
296 MB.semq file · 1M rows

A million rows

Operation Seconds What is timed
concat 0.195 Encoding.concat of 10 parts
diff 0.049 Encoding.diff against a copy with 1 row in 100 changed
encode 1.471 Codec.encode per chunk plus one Encoding.concat; vector generation excluded
floor 0.015 Floor.measure over 3 null diffs (diffs built untimed)
gate 1.081 load reference, three nulls and candidate; diff nulls; Floor.measure; diff candidate; Diff.within
load 0.240 Encoding.load from a path (file in the OS page cache)
save 0.186 Encoding.save to a path (atomic write with fsync)

The same bytes everywhere

The CI identity fixture encodes 1,000 real SciFact vectors under all five configurations on 4 native host targets and WebAssembly. Each job compares content_digest, state_id and the saved-file hash with committed values. It tests byte identity, not equal throughput.

Throughput measurements · Scale measurements · CI matrix and expected identities