Proving to be very helpful for reducing UI-thread stalls!
However, this is going to be an important piece of tech for future upgrades to the rendering engine and app model.
It's hard to do that fast, it needs for-loops that take awhile, and hard to do async (coordination craziness).
Background thread can grab snapshot and then run off with it for something like ......... auto-save.
Fast snapshots of the data make this doable in background with no intrusion.
Proving to be very helpful for reducing UI-thread stalls!
However, this is going to be an important piece of tech for future upgrades to the rendering engine and app model.
It's hard to do that fast, it needs for-loops that take awhile, and hard to do async (coordination craziness).
Background thread can grab snapshot and then run off with it for something like ......... auto-save.
Fast snapshots of the data make this doable in background with no intrusion.
These types of caches always need a janitor -- enumerate everything, remove any WeakRef's that are now null. Takes time!
Now I push a Where() query, let background thread flatten it later.
"oh, I'm spending 30% time in the GC ... due to 100s of thousands of new allocations per second"
For some of them, such as C. Dictionary, accessing Count is VERY expensive, kinda like taking a heavy write lock. The internal accounting is loose here, to allow other operations to achieve their perf promises.
As mentioned elsewhere, my LINQ-ish stuff can't do Count or Select() very fast. All sorts of other ops are fast instead.