Thanks Ali. I have tried putting GC.disable() in both main and runJob, but the timing behaviour did not change. The python version works in a similar fashion and also has automatic GC. I tend to think that is not the (biggest) problem.

The program is long and newbie-ugly ... but I could put it somewhere if that would help.

Gerald

On Tuesday, 12 May 2015 at 15:24:45 UTC, Ali Çehreli wrote:
On 05/12/2015 07:59 AM, Gerald Jansen wrote:

> the performance of my D version deteriorates
> rapidly beyond a handful of jobs whereas the time for the
Python version
> increases linearly with the number of jobs per cpu core.

It may be related to GC collections. If it hasn't been changed recently, every allocation from GC triggers a collection cycle. D's current GC being a stop-the-world kind, you lose all benefit of parallel processing when that happens.

Without seeing runJob, even arr2.dup may be having such an effect on the performance.

Ali

Reply via email to