The SysAllocString
function uses a cache of BSTR
s which can mess up your performance tracing. There is a switch for disabling it for debugging purposes, but why does the cache exist at all?
The BSTR
cache is a historical artifact. When BSTR
s were originally introduced, performance tracing showed that a significant chunk of time was spent merely allocating and freeing memory in the heap manager. Using a cache reduced the heap allocation overhead significantly.
In the intervening years, um, decades, the performance of the heap manager has improved to the point where the cache isn’t necessary any more. But the SysAllocString
people can’t get rid of the BSTR
because so many applications unwittingly rely on it.
The BSTR
cache is now a compatibility constraint.
0 comments