Closed matthewkeil closed 8 months ago
After digging through the SWIG generated code I am pretty confident now that I can swap the shared_ptr for a unique_ptr safely. There are no smart pointers used at all by swig and the objects are all meant to be singletons that are referenced by every other instance in JS land. The GC moves objects so there is no deep copying happening which means there will be no leaks and not race conditions or other memory instability from the switch. It will also significantly increase the dereferencing operation during execution because there will be no atomic operations related to the shared_ptr. I will make the swap and see how it improves the performance
I tested this and it did not turn out faster. I will check to see if there is a memory savings using unique vs shared pointers though
Perf test the new and old library to understand the differences.
Compares individual functions and also compares multithreading using workers/libuv.
Results: