
Simon Marlow wrote:
Right - Ptr isn't the right thing here, because GC will move objects around. That's why we have StablePtr and StableName.
may it be that makeStableName is expensive? (or it is my additional Map?) My old version is faster, because the version with makeStableName does very much GC. Christian 1. with makeStableName (and a Map): 2,447,401,824 bytes allocated in the heap 703,294,688 bytes copied during GC 50,780,688 bytes maximum residency (24 sample(s)) 9328 collections in generation 0 (129.88s) 24 collections in generation 1 ( 4.10s) 99 Mb total memory in use INIT time 0.00s ( 0.00s elapsed) MUT time 27.28s ( 28.91s elapsed) GC time 133.98s (140.08s elapsed) EXIT time 0.00s ( 0.00s elapsed) Total time 161.26s (168.99s elapsed) %GC time 83.1% (82.9% elapsed) Alloc rate 89,714,143 bytes per MUT second Productivity 16.9% of total user, 16.1% of total elapsed 2. without makeStableName: 7,560,158,340 bytes allocated in the heap 578,736,496 bytes copied during GC 44,307,024 bytes maximum residency (25 sample(s)) 28832 collections in generation 0 ( 6.83s) 25 collections in generation 1 ( 3.20s) 102 Mb total memory in use INIT time 0.00s ( 0.00s elapsed) MUT time 139.71s (146.74s elapsed) GC time 10.03s ( 10.94s elapsed) EXIT time 0.00s ( 0.00s elapsed) Total time 149.74s (157.68s elapsed) %GC time 6.7% (6.9% elapsed) Alloc rate 54,113,222 bytes per MUT second Productivity 93.3% of total user, 88.6% of total elapsed