# New Ticket Created by "Peter Gibbs" # Please include the string: [netlabs #619] # in the subject line of all future correspondence about this issue. # <URL: http://bugs6.perl.org/rt2/Ticket/Display.html?id=619 >
The attached patch improves performance for programs that allocate an increasing amount of string (or other buffer) memory, rather than extensively manipulating a small amount of data. It works by delaying memory pool compaction until a preset fraction (currently set to 20%) of the total memory allocated to that pool can be reclaimed; this significantly reduces the number of compaction passes on programs that allocate a lot of memory without releasing it soon thereafter. Programs that don't fall into this category may experience a slight performance decrease due to the increased overhead of tracking the size of the reclaimable data. The next round of updates will aim at further reducing the number of DOD runs, which should regain performance in programs that create and delete a large number of objects. Benchmark Before After life.pasm, 5000 generations 86.77 87.87 zip.pasm, jit_cpu.c (56641 bytes) 52.02 4.22 reverse.cola, jit_cpu.c 8.24 5.14 hanoi.pasm, 14 discs 31.42 31.80 All programs are run with output suppressed (life) or redirected to /dev/null I would be very interested in getting benchmark results from other platforms (above are from a Pentium 166MHz, 96MB, linux 2.2.18) -- Peter Gibbs EmKel Systems