import { bench, describe } from 'vitest'; const _attachHandlerSym = Symbol.for('flowful_internal_attachHandler'); const _detachHandlerSym = Symbol.for('flowful_internal_detachHandler'); const _setIsHandlerExecutedSym = Symbol.for('flowful_internal_setIsHandlerExecuted'); class StringMap { _attachHandler(handler: any) { /* noop */ } _detachHandler() { /* noop */ } _setIsHandlerExecuted(invoked: boolean) { /* noop */ } } class SymbolMap { [_attachHandlerSym](handler: any) { /* noop */ } [_detachHandlerSym]() { /* noop */ } [_setIsHandlerExecutedSym](invoked: boolean) { /* noop */ } } const stringMapInstance = new StringMap(); const symbolMapInstance = new SymbolMap(); const fakeHandler = { id: 'handler' }; describe('Property Access Benchmark: String vs Symbol', () => { bench('String Key Access', () => { stringMapInstance._attachHandler(fakeHandler); stringMapInstance._detachHandler(); stringMapInstance._setIsHandlerExecuted(true); stringMapInstance._setIsHandlerExecuted(false); }); bench('Symbol Key Access', () => { symbolMapInstance[_attachHandlerSym](fakeHandler); symbolMapInstance[_detachHandlerSym](); symbolMapInstance[_setIsHandlerExecutedSym](true); symbolMapInstance[_setIsHandlerExecutedSym](false); }); bench('String Key Access (_attachHandler)', () => { stringMapInstance._attachHandler(fakeHandler); }); bench('Symbol Key Access (_attachHandlerSym)', () => { symbolMapInstance[_attachHandlerSym](fakeHandler); }); });