Stringpool garbage collector performance enhancements
Final Release Note
Applications with large numbers of strings, which can occur with large numbers of local variables, local variables with many nodes, or both, and whose performance is limited by garbage collection, i.e. applications where the strings change frequently, run much faster. In one test case, the improvement was two orders of magnitude. [#85 (closed)]
A description of the issue is at https://sourceforge.net/p/fis-gtm/support-requests/35/. This issue exists in GT.M V63002 and in YottaDB r1.10. Stringpool garbage collection takes more than a minute in that test case.
Analysis of this issue identified the bottleneck in the sorting function used by the garbage collection (stpg_sort). This quicksort algorithm is now enhanced to use a better pivot. With those changes, the garbage collection times for the same test case is now down to 0.4 seconds.
Quick experiments confirmed that these garbage collector improvements apply not just to that particular test case, where the stringpool has a lot of strings, but to even relatively lightweight application usage of the stringpool.
Draft Release Note
The stringpool garbage collector runs a lot faster than before. The effect is particularly pronounced in case the application uses a lot of local variable nodes. In one test case, what used to take 83 seconds previously now only takes 0.5 seconds.