Escaping a loop early: ``break''.
authorClaude Heiland-Allen <claude@mathr.co.uk>
Fri, 20 Dec 2013 21:15:57 +0000 (21:15 +0000)
committerClaude Heiland-Allen <claude@mathr.co.uk>
Fri, 20 Dec 2013 21:15:57 +0000 (21:15 +0000)
commit73850281d75235cac5dc192a2f559f5fba36ec7d
tree917fae64e9cf03da87c8ad622362fb198097e19a
parentc71fb8b6c4775c6087fa23173a1613abefcb197a
Escaping a loop early: ``break''.

When we increased the resolution, our program took noticeably longer to
render each image.  We can speed it up.  Our program currently keeps
iterating to the maximum iterations limit for every pixel, only then
checking if it didn't exceed the escape radius.  But if any iterate along
the way exceeded the escape radius, we know that it's already well on the
way to infinity.  If we check each time through the loop, then we can
stop looping, with a ``break'' statement -- it makes the control flow
pass immediately to the statement following the loop body.

This simple optimization makes our program four times faster for the
initial view:

    $ time ./mandelbrot -0.75 0 1.25 > mandelbrot.pgm
    real    0m6.276s
    user    0m6.260s
    sys     0m0.016s
    $ time ./mandelbrot -0.75 0 1.25 > mandelbrot.pgm
    real    0m1.593s
    user    0m1.584s
    sys     0m0.004s
    $
mandelbrot.c