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 rowsA 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