Perl on speed: multi-core programming for mortals


As multi-core and multi-processor systems become ever more widespread, programmers are faced with a new challenge: writing software that can take full advantage of the parallelism in the hardware.

Concurrent code has a reputation for being tricky to get right, but with the right tools, that needn’t be true. This is a case study of how a vanilla serial-execution Perl program was parallelised, using Unix’s fork as the fundamental primitive rather than threads. The simplicity of programming with fork meant that the work only took an evening, but the result is also efficient — we got a near-linear speedup in the number of CPU cores.