Indexed access hotspot N=25

Indexed access over mapped reader helpers, a reduced shape from project-row property access pressure.

tsz is 6.0x faster 67 lines 4 KB

Timing

tsz
63.20ms
tsgo
381.40ms

Files

// Indexed-access hotspot benchmark.
// Mirrors project-code patterns that repeatedly read through mapped helpers.

interface IndexedModel {
    prop0: { value: number; tag: 'prop0'; nested: { flag: boolean } };
    prop1: { value: number; tag: 'prop1'; nested: { flag: boolean } };
    prop2: { value: number; tag: 'prop2'; nested: { flag: boolean } };
    prop3: { value: number; tag: 'prop3'; nested: { flag: boolean } };
    prop4: { value: number; tag: 'prop4'; nested: { flag: boolean } };
    prop5: { value: number; tag: 'prop5'; nested: { flag: boolean } };
    prop6: { value: number; tag: 'prop6'; nested: { flag: boolean } };
    prop7: { value: number; tag: 'prop7'; nested: { flag: boolean } };
    prop8: { value: number; tag: 'prop8'; nested: { flag: boolean } };
    prop9: { value: number; tag: 'prop9'; nested: { flag: boolean } };
    prop10: { value: number; tag: 'prop10'; nested: { flag: boolean } };
    prop11: { value: number; tag: 'prop11'; nested: { flag: boolean } };
    prop12: { value: number; tag: 'prop12'; nested: { flag: boolean } };
    prop13: { value: number; tag: 'prop13'; nested: { flag: boolean } };
    prop14: { value: number; tag: 'prop14'; nested: { flag: boolean } };
    prop15: { value: number; tag: 'prop15'; nested: { flag: boolean } };
    prop16: { value: number; tag: 'prop16'; nested: { flag: boolean } };
    prop17: { value: number; tag: 'prop17'; nested: { flag: boolean } };
    prop18: { value: number; tag: 'prop18'; nested: { flag: boolean } };
    prop19: { value: number; tag: 'prop19'; nested: { flag: boolean } };
    prop20: { value: number; tag: 'prop20'; nested: { flag: boolean } };
    prop21: { value: number; tag: 'prop21'; nested: { flag: boolean } };
    prop22: { value: number; tag: 'prop22'; nested: { flag: boolean } };
    prop23: { value: number; tag: 'prop23'; nested: { flag: boolean } };
    prop24: { value: number; tag: 'prop24'; nested: { flag: boolean } };
}

type IndexedReaders<T> = { [K in keyof T]: (value: T[K]) => T[K] };
type IndexedValues<T> = { [K in keyof T]: T[K] }[keyof T];

declare const model: IndexedModel;
declare const readers: IndexedReaders<IndexedModel>;

function readIndexed<K extends keyof IndexedModel>(key: K): IndexedModel[K] {
    return readers[key](model[key]);
}

type AllIndexedValues = IndexedValues<IndexedModel>;
const indexedValue0 = readIndexed('prop0').nested.flag ? readIndexed('prop0').value : 0;
const indexedValue1 = readIndexed('prop1').nested.flag ? readIndexed('prop1').value : 0;
const indexedValue2 = readIndexed('prop2').nested.flag ? readIndexed('prop2').value : 0;
const indexedValue3 = readIndexed('prop3').nested.flag ? readIndexed('prop3').value : 0;
const indexedValue4 = readIndexed('prop4').nested.flag ? readIndexed('prop4').value : 0;
const indexedValue5 = readIndexed('prop5').nested.flag ? readIndexed('prop5').value : 0;
const indexedValue6 = readIndexed('prop6').nested.flag ? readIndexed('prop6').value : 0;
const indexedValue7 = readIndexed('prop7').nested.flag ? readIndexed('prop7').value : 0;
const indexedValue8 = readIndexed('prop8').nested.flag ? readIndexed('prop8').value : 0;
const indexedValue9 = readIndexed('prop9').nested.flag ? readIndexed('prop9').value : 0;
const indexedValue10 = readIndexed('prop10').nested.flag ? readIndexed('prop10').value : 0;
const indexedValue11 = readIndexed('prop11').nested.flag ? readIndexed('prop11').value : 0;
const indexedValue12 = readIndexed('prop12').nested.flag ? readIndexed('prop12').value : 0;
const indexedValue13 = readIndexed('prop13').nested.flag ? readIndexed('prop13').value : 0;
const indexedValue14 = readIndexed('prop14').nested.flag ? readIndexed('prop14').value : 0;
const indexedValue15 = readIndexed('prop15').nested.flag ? readIndexed('prop15').value : 0;
const indexedValue16 = readIndexed('prop16').nested.flag ? readIndexed('prop16').value : 0;
const indexedValue17 = readIndexed('prop17').nested.flag ? readIndexed('prop17').value : 0;
const indexedValue18 = readIndexed('prop18').nested.flag ? readIndexed('prop18').value : 0;
const indexedValue19 = readIndexed('prop19').nested.flag ? readIndexed('prop19').value : 0;
const indexedValue20 = readIndexed('prop20').nested.flag ? readIndexed('prop20').value : 0;
const indexedValue21 = readIndexed('prop21').nested.flag ? readIndexed('prop21').value : 0;
const indexedValue22 = readIndexed('prop22').nested.flag ? readIndexed('prop22').value : 0;
const indexedValue23 = readIndexed('prop23').nested.flag ? readIndexed('prop23').value : 0;
const indexedValue24 = readIndexed('prop24').nested.flag ? readIndexed('prop24').value : 0;