1. 18 Sep, 2023 1 commit
  2. 07 Sep, 2022 1 commit
  3. 20 Jul, 2022 1 commit
    • Vyacheslav Egorov's avatar
      Use persistent hash map to store _inheritedWidgets (#107068) · 81300293
      Vyacheslav Egorov authored
      * Use persistent hash map to store _inheritedWidgets
      
      Instead of using a HashMap and copying it down the tree
      which leads to quadratic time and space complexity
      use a persistent data structure which can amortize
      the cost by sharing parts of the structure.
      
      The data shows HAMT based PersistentHashMap to be
      5-10x faster for building _inheritedWidgets and
      considerably more space effecient (e.g. bringing
      amount of memory allocated when constructing
      _inheritedWidgets in a tree with 150 InheritedWidget
      down to 70Kb from 970Kb).
      
      PersistentHashMap is slower than HashMap for
      access: 2-3x in relative terms, but in absolute
      terms we are only talking about ~0.2ns slow down
      per access and various app benchmarks we run have
      have not revealed any significant regressions.
      81300293