Indexed access hotspot N=100
Indexed access over mapped reader helpers, a reduced shape from project-row property access pressure.
tsz is 4.5x faster 217 lines 16 KB
Timing
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 } };
prop50: { value: number; tag: 'prop50'; nested: { flag: boolean } };
prop51: { value: number; tag: 'prop51'; nested: { flag: boolean } };
prop52: { value: number; tag: 'prop52'; nested: { flag: boolean } };
prop53: { value: number; tag: 'prop53'; nested: { flag: boolean } };
prop54: { value: number; tag: 'prop54'; nested: { flag: boolean } };
prop55: { value: number; tag: 'prop55'; nested: { flag: boolean } };
prop56: { value: number; tag: 'prop56'; nested: { flag: boolean } };
prop57: { value: number; tag: 'prop57'; nested: { flag: boolean } };
prop58: { value: number; tag: 'prop58'; nested: { flag: boolean } };
prop59: { value: number; tag: 'prop59'; nested: { flag: boolean } };
prop60: { value: number; tag: 'prop60'; nested: { flag: boolean } };
prop61: { value: number; tag: 'prop61'; nested: { flag: boolean } };
prop62: { value: number; tag: 'prop62'; nested: { flag: boolean } };
prop63: { value: number; tag: 'prop63'; nested: { flag: boolean } };
prop64: { value: number; tag: 'prop64'; nested: { flag: boolean } };
prop65: { value: number; tag: 'prop65'; nested: { flag: boolean } };
prop66: { value: number; tag: 'prop66'; nested: { flag: boolean } };
prop67: { value: number; tag: 'prop67'; nested: { flag: boolean } };
prop68: { value: number; tag: 'prop68'; nested: { flag: boolean } };
prop69: { value: number; tag: 'prop69'; nested: { flag: boolean } };
prop70: { value: number; tag: 'prop70'; nested: { flag: boolean } };
prop71: { value: number; tag: 'prop71'; nested: { flag: boolean } };
prop72: { value: number; tag: 'prop72'; nested: { flag: boolean } };
prop73: { value: number; tag: 'prop73'; nested: { flag: boolean } };
prop74: { value: number; tag: 'prop74'; nested: { flag: boolean } };
prop75: { value: number; tag: 'prop75'; nested: { flag: boolean } };
prop76: { value: number; tag: 'prop76'; nested: { flag: boolean } };
prop77: { value: number; tag: 'prop77'; nested: { flag: boolean } };
prop78: { value: number; tag: 'prop78'; nested: { flag: boolean } };
prop79: { value: number; tag: 'prop79'; nested: { flag: boolean } };
prop80: { value: number; tag: 'prop80'; nested: { flag: boolean } };
prop81: { value: number; tag: 'prop81'; nested: { flag: boolean } };
prop82: { value: number; tag: 'prop82'; nested: { flag: boolean } };
prop83: { value: number; tag: 'prop83'; nested: { flag: boolean } };
prop84: { value: number; tag: 'prop84'; nested: { flag: boolean } };
prop85: { value: number; tag: 'prop85'; nested: { flag: boolean } };
prop86: { value: number; tag: 'prop86'; nested: { flag: boolean } };
prop87: { value: number; tag: 'prop87'; nested: { flag: boolean } };
prop88: { value: number; tag: 'prop88'; nested: { flag: boolean } };
prop89: { value: number; tag: 'prop89'; nested: { flag: boolean } };
prop90: { value: number; tag: 'prop90'; nested: { flag: boolean } };
prop91: { value: number; tag: 'prop91'; nested: { flag: boolean } };
prop92: { value: number; tag: 'prop92'; nested: { flag: boolean } };
prop93: { value: number; tag: 'prop93'; nested: { flag: boolean } };
prop94: { value: number; tag: 'prop94'; nested: { flag: boolean } };
prop95: { value: number; tag: 'prop95'; nested: { flag: boolean } };
prop96: { value: number; tag: 'prop96'; nested: { flag: boolean } };
prop97: { value: number; tag: 'prop97'; nested: { flag: boolean } };
prop98: { value: number; tag: 'prop98'; nested: { flag: boolean } };
prop99: { value: number; tag: 'prop99'; 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;
const indexedValue50 = readIndexed('prop50').nested.flag ? readIndexed('prop50').value : 0;
const indexedValue51 = readIndexed('prop51').nested.flag ? readIndexed('prop51').value : 0;
const indexedValue52 = readIndexed('prop52').nested.flag ? readIndexed('prop52').value : 0;
const indexedValue53 = readIndexed('prop53').nested.flag ? readIndexed('prop53').value : 0;
const indexedValue54 = readIndexed('prop54').nested.flag ? readIndexed('prop54').value : 0;
const indexedValue55 = readIndexed('prop55').nested.flag ? readIndexed('prop55').value : 0;
const indexedValue56 = readIndexed('prop56').nested.flag ? readIndexed('prop56').value : 0;
const indexedValue57 = readIndexed('prop57').nested.flag ? readIndexed('prop57').value : 0;
const indexedValue58 = readIndexed('prop58').nested.flag ? readIndexed('prop58').value : 0;
const indexedValue59 = readIndexed('prop59').nested.flag ? readIndexed('prop59').value : 0;
const indexedValue60 = readIndexed('prop60').nested.flag ? readIndexed('prop60').value : 0;
const indexedValue61 = readIndexed('prop61').nested.flag ? readIndexed('prop61').value : 0;
const indexedValue62 = readIndexed('prop62').nested.flag ? readIndexed('prop62').value : 0;
const indexedValue63 = readIndexed('prop63').nested.flag ? readIndexed('prop63').value : 0;
const indexedValue64 = readIndexed('prop64').nested.flag ? readIndexed('prop64').value : 0;
const indexedValue65 = readIndexed('prop65').nested.flag ? readIndexed('prop65').value : 0;
const indexedValue66 = readIndexed('prop66').nested.flag ? readIndexed('prop66').value : 0;
const indexedValue67 = readIndexed('prop67').nested.flag ? readIndexed('prop67').value : 0;
const indexedValue68 = readIndexed('prop68').nested.flag ? readIndexed('prop68').value : 0;
const indexedValue69 = readIndexed('prop69').nested.flag ? readIndexed('prop69').value : 0;
const indexedValue70 = readIndexed('prop70').nested.flag ? readIndexed('prop70').value : 0;
const indexedValue71 = readIndexed('prop71').nested.flag ? readIndexed('prop71').value : 0;
const indexedValue72 = readIndexed('prop72').nested.flag ? readIndexed('prop72').value : 0;
const indexedValue73 = readIndexed('prop73').nested.flag ? readIndexed('prop73').value : 0;
const indexedValue74 = readIndexed('prop74').nested.flag ? readIndexed('prop74').value : 0;
const indexedValue75 = readIndexed('prop75').nested.flag ? readIndexed('prop75').value : 0;
const indexedValue76 = readIndexed('prop76').nested.flag ? readIndexed('prop76').value : 0;
const indexedValue77 = readIndexed('prop77').nested.flag ? readIndexed('prop77').value : 0;
const indexedValue78 = readIndexed('prop78').nested.flag ? readIndexed('prop78').value : 0;
const indexedValue79 = readIndexed('prop79').nested.flag ? readIndexed('prop79').value : 0;
const indexedValue80 = readIndexed('prop80').nested.flag ? readIndexed('prop80').value : 0;
const indexedValue81 = readIndexed('prop81').nested.flag ? readIndexed('prop81').value : 0;
const indexedValue82 = readIndexed('prop82').nested.flag ? readIndexed('prop82').value : 0;
const indexedValue83 = readIndexed('prop83').nested.flag ? readIndexed('prop83').value : 0;
const indexedValue84 = readIndexed('prop84').nested.flag ? readIndexed('prop84').value : 0;
const indexedValue85 = readIndexed('prop85').nested.flag ? readIndexed('prop85').value : 0;
const indexedValue86 = readIndexed('prop86').nested.flag ? readIndexed('prop86').value : 0;
const indexedValue87 = readIndexed('prop87').nested.flag ? readIndexed('prop87').value : 0;
const indexedValue88 = readIndexed('prop88').nested.flag ? readIndexed('prop88').value : 0;
const indexedValue89 = readIndexed('prop89').nested.flag ? readIndexed('prop89').value : 0;
const indexedValue90 = readIndexed('prop90').nested.flag ? readIndexed('prop90').value : 0;
const indexedValue91 = readIndexed('prop91').nested.flag ? readIndexed('prop91').value : 0;
const indexedValue92 = readIndexed('prop92').nested.flag ? readIndexed('prop92').value : 0;
const indexedValue93 = readIndexed('prop93').nested.flag ? readIndexed('prop93').value : 0;
const indexedValue94 = readIndexed('prop94').nested.flag ? readIndexed('prop94').value : 0;
const indexedValue95 = readIndexed('prop95').nested.flag ? readIndexed('prop95').value : 0;
const indexedValue96 = readIndexed('prop96').nested.flag ? readIndexed('prop96').value : 0;
const indexedValue97 = readIndexed('prop97').nested.flag ? readIndexed('prop97').value : 0;
const indexedValue98 = readIndexed('prop98').nested.flag ? readIndexed('prop98').value : 0;
const indexedValue99 = readIndexed('prop99').nested.flag ? readIndexed('prop99').value : 0;