Generator

Four prices for one set of marked rows

Rendered here at the parameters it defaults to, with every essay that calls it — which is the same list as the blast radius of changing it.
Four prices for one set of marked rowsThe same 513 marked rows out of 16,385, held four ways, at a sampling rate of one in 32. The plain vector spends one bit a row and is 19,475 bits. Elias-Fano splits each position into a 4-bit low part and a high part written in unary, and is 3,905 — 20.1% of the plain vector. Compressed blocks reach 4,557, which at this density is close but not equal. The fourth row is not a structure: it is the accounting this collection has charged for Elias-Fano since the repetition strand, and it is 314 bits under the built object because it omits the directory a select needs.plain bit vector19,475compressed blocks4,55723.4%Elias–Fano3,90520.1%positions, priced as Elias–Fano3,59118.4%16,385 rows · one in 32 markedElias-Fano at 20.1%

Four prices for one set of marked rows

The same 513 marked rows out of 16,385, held four ways, at a sampling rate of one in 32. The plain vector spends one bit a row and is 19,475 bits. Elias-Fano splits each position into a 4-bit low part and a high part written in unary, and is 3,905 — 20.1% of the plain vector. Compressed blocks reach 4,557, which at this density is close but not equal. The fourth row is not a structure: it is the accounting this collection has charged for Elias-Fano since the repetition strand, and it is 314 bits under the built object because it omits the directory a select needs.

Drawn at 700 × 226, wide on the page. Everything above is what sparse-marks returns with no arguments; the caption is the generator's own, computed from the numbers in the drawing rather than written beside it.

8 essays call sparse-marks. The drawing above is what it returns with no arguments at all; every call below passes it something, because a placement that passes nothing draws whichever member of the family the generator happens to default to rather than the one its essay argues about — which is what optcheck and figfill exist to catch.

Where it is called

Changing this generator changes every one of these figures.

01e+42e+43e+44e+450100one sampled position in every …bitsplain, one bit a rowcompressed blocksElias-Fano16,384 rowscrosses at one in 4 What the machine does

Twenty bits apart

05e+31e+41.5e+40246bits kept in the low partbits⌊log₂(n/m)⌋ = 2low partshigh vector2,049 marks in 16,385 positions1 bits between the two roundings What a bound is

The flat bottom of a shallow curve

4,097 rows · one in 32 marked3.1% of the rows The other axis

The array that says where is twice the samples

02040255075100125one sampled position in every …of the index, per centplain marks: 18.5%Elias-Fano: 3.8%16,384 characters14.9% off at one in 32 The index that replaces the text

What the locating apparatus becomes

plain bit vector19,475compressed blocks4,55723.4%Elias–Fano3,90520.1%positions, priced as Elias–Fano3,59118.4%16,385 rows · one in 32 markedElias-Fano at 20.1% Structures

A position split in two

01e+42e+43e+44e+450100one sampled position in every …bitsplain, one bit a rowcompressed blocksElias-Fano16,384 rowscrosses at one in 4 What is taught wrongly

Where the sparse representation loses

bits heldthe model3,591the structure3,905one rank, in operationsbinary search10 stepsselect and walk1 select + 0.7016,385 rows · one in 32 marked14x on the operation What is taught wrongly

A price with no structure under it

0102030100200one sampled position in every …of both halves saved, per centplain marks: 13.5%Elias-Fano: 1.8%16,384 characters17.6x against 2.3x What the libraries do

The floor was the marks

The library, page 5 of 5 — where sparse-marks sits