On OS X, /tmp is a symlink to /private/tmp, so the test prints the wrong output. I've changed it to use /dev instead, which is hopefully less likely to be a symlink.
It was explicitly removing the program inbetween the two runs, but I don't see why that should be necessary.
We now just sleep for 2 seconds, rather than using touch --date="now + 3 seconds" which doesn't work on OS X. OS X does have "touch -A", but that doesn't work on Linux.
This apparently made no difference before, but it looks like I fixed it in my time overhaul, which made this test suddenly run a lot slower.
I checked and there's no regression here, just timing of GCs.