Boutique

✨ A magical persistence library (and so much more) for state-driven iOS and Mac apps ✨

MIT License

Stars
919
Committers
10

Bot releases are hidden (Show)

Boutique - Performance Tuning

Published by mergesort over 2 years ago

Don't let the minor version bump fool you, this version is a huge bump in performance. As always it's the code you write that causes problems and the code you don't write that solves problems. It turns out I was creating many unnecessary writes on startup launch and additionally every time an item was added to the Store. This became a worse and worse problem as a Store grew, impacting startup time and performance of writing or removing items from a large Store.

  • Startup time is dramatically improved. Testing in a profiler app I built I was able to get launch time for a Store with 8,000 objects from 15 seconds down to somewhere between 1-2 seconds. For small Stores the launch time is practically nothing.

  • There are also no longer any performance penalties for adding objects to a large Store. This is due to the fact we're no longer rewriting every item in the Store (duh), only writing a the new items that were added to the store. You can expect the same for remove operations.

  • A Combine subscription that was performing the unnecessary rewrites was removed, also means being able to remove the dependency on Combine, which removes the necessity for solving https://github.com/mergesort/Boutique/issues/1.

  • There are no API changes so none of your code has to change!

Boutique - 1.0

Published by mergesort over 2 years ago

Let's go shopping! 🛍️

Package Rankings
Top 13.06% on Swiftpackageindex.com