Summary: SelectorTable improvements

MD
Marcus Denker
Fri, Jun 3, 2022 8:59 AM

Hi,

Here is a short summary of all the improvements related to the SelectorTable
(which allows the tools to quickly check if a symbol is used as a selector):

  • It is reset at image build (#cleanUp)

    • re-creating is fast (#bench shows '16.902 per second' on my machine for rebuildSelectorTable)
      (we can even think about resetting it on #shutDown: now)
  • Recording happens at method installation, not compilation

    • this means we call it far less on code loading
    • not called anymore for doIts and FFI method creation
  • optimized: #isSelectorSymbol is ~3.5 times faster in Pharo11 compared to Pharo10

    • most speedup due to using a identity dictionary, avoiding costly string comparing
  • all users of #findInternedSelector: have been changed to send #isSelectorSymbol to the symbol

    • #findInternedSelector: will be deprecated

    Marcus

Hi, Here is a short summary of all the improvements related to the SelectorTable (which allows the tools to quickly check if a symbol is used as a selector): - It is reset at image build (#cleanUp) - re-creating is fast (#bench shows '16.902 per second' on my machine for rebuildSelectorTable) (we can even think about resetting it on #shutDown: now) - Recording happens at method installation, not compilation - this means we call it far less on code loading - not called anymore for doIts and FFI method creation - optimized: #isSelectorSymbol is ~3.5 times faster in Pharo11 compared to Pharo10 - most speedup due to using a identity dictionary, avoiding costly string comparing - all users of #findInternedSelector: have been changed to send #isSelectorSymbol to the symbol - #findInternedSelector: will be deprecated Marcus