Indexed access hotspot N=50

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

tsz is 5.7x faster 117 lines 8 KB

Timing

tsz
67.23ms
tsgo
380.18ms

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 } };
    prop25: { value: number; tag: 'prop25'; nested: { flag: boolean } };
    prop26: { value: number; tag: 'prop26'; nested: { flag: boolean } };
    prop27: { value: number; tag: 'prop27'; nested: { flag: boolean } };
    prop28: { value: number; tag: 'prop28'; nested: { flag: boolean } };
    prop29: { value: number; tag: 'prop29'; nested: { flag: boolean } };
    prop30: { value: number; tag: 'prop30'; nested: { flag: boolean } };
    prop31: { value: number; tag: 'prop31'; nested: { flag: boolean } };
    prop32: { value: number; tag: 'prop32'; nested: { flag: boolean } };
    prop33: { value: number; tag: 'prop33'; nested: { flag: boolean } };
    prop34: { value: number; tag: 'prop34'; nested: { flag: boolean } };
    prop35: { value: number; tag: 'prop35'; nested: { flag: boolean } };
    prop36: { value: number; tag: 'prop36'; nested: { flag: boolean } };
    prop37: { value: number; tag: 'prop37'; nested: { flag: boolean } };
    prop38: { value: number; tag: 'prop38'; nested: { flag: boolean } };
    prop39: { value: number; tag: 'prop39'; nested: { flag: boolean } };
    prop40: { value: number; tag: 'prop40'; nested: { flag: boolean } };
    prop41: { value: number; tag: 'prop41'; nested: { flag: boolean } };
    prop42: { value: number; tag: 'prop42'; nested: { flag: boolean } };
    prop43: { value: number; tag: 'prop43'; nested: { flag: boolean } };
    prop44: { value: number; tag: 'prop44'; nested: { flag: boolean } };
    prop45: { value: number; tag: 'prop45'; nested: { flag: boolean } };
    prop46: { value: number; tag: 'prop46'; nested: { flag: boolean } };
    prop47: { value: number; tag: 'prop47'; nested: { flag: boolean } };
    prop48: { value: number; tag: 'prop48'; nested: { flag: boolean } };
    prop49: { value: number; tag: 'prop49'; 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;
const indexedValue25 = readIndexed('prop25').nested.flag ? readIndexed('prop25').value : 0;
const indexedValue26 = readIndexed('prop26').nested.flag ? readIndexed('prop26').value : 0;
const indexedValue27 = readIndexed('prop27').nested.flag ? readIndexed('prop27').value : 0;
const indexedValue28 = readIndexed('prop28').nested.flag ? readIndexed('prop28').value : 0;
const indexedValue29 = readIndexed('prop29').nested.flag ? readIndexed('prop29').value : 0;
const indexedValue30 = readIndexed('prop30').nested.flag ? readIndexed('prop30').value : 0;
const indexedValue31 = readIndexed('prop31').nested.flag ? readIndexed('prop31').value : 0;
const indexedValue32 = readIndexed('prop32').nested.flag ? readIndexed('prop32').value : 0;
const indexedValue33 = readIndexed('prop33').nested.flag ? readIndexed('prop33').value : 0;
const indexedValue34 = readIndexed('prop34').nested.flag ? readIndexed('prop34').value : 0;
const indexedValue35 = readIndexed('prop35').nested.flag ? readIndexed('prop35').value : 0;
const indexedValue36 = readIndexed('prop36').nested.flag ? readIndexed('prop36').value : 0;
const indexedValue37 = readIndexed('prop37').nested.flag ? readIndexed('prop37').value : 0;
const indexedValue38 = readIndexed('prop38').nested.flag ? readIndexed('prop38').value : 0;
const indexedValue39 = readIndexed('prop39').nested.flag ? readIndexed('prop39').value : 0;
const indexedValue40 = readIndexed('prop40').nested.flag ? readIndexed('prop40').value : 0;
const indexedValue41 = readIndexed('prop41').nested.flag ? readIndexed('prop41').value : 0;
const indexedValue42 = readIndexed('prop42').nested.flag ? readIndexed('prop42').value : 0;
const indexedValue43 = readIndexed('prop43').nested.flag ? readIndexed('prop43').value : 0;
const indexedValue44 = readIndexed('prop44').nested.flag ? readIndexed('prop44').value : 0;
const indexedValue45 = readIndexed('prop45').nested.flag ? readIndexed('prop45').value : 0;
const indexedValue46 = readIndexed('prop46').nested.flag ? readIndexed('prop46').value : 0;
const indexedValue47 = readIndexed('prop47').nested.flag ? readIndexed('prop47').value : 0;
const indexedValue48 = readIndexed('prop48').nested.flag ? readIndexed('prop48').value : 0;
const indexedValue49 = readIndexed('prop49').nested.flag ? readIndexed('prop49').value : 0;