Hello I stumbled across a performance issue when pinning objects in memory. Below I have two scripts that pin and unpin a byte array (or any object) 20k times. The first script pins each time a new byte array:
[ 20000 timesRepeat: [ | array wasPinned | array := ByteArray new. wasPinned := array pinInMemory. array setPinnedInMemory: wasPinned. ] ] timeToRunWithoutGC. *"4284"*
while the second one pins the same instance of array:
array := ByteArray new. [ 20000 timesRepeat: [ | wasPinned | wasPinned := array pinInMemory. array setPinnedInMemory: wasPinned. ] ] timeToRunWithoutGC "*12*"
However, as you can see there is a huge performance difference between these scripts. Is it expected or is it a bug? And if it is expected what can be happening in VM that leads to such huge performance impact? Thanks! Cheers, Alex