Help optimizing code?
Uknown
sireeshkodali1 at gmail.com
Tue Jan 2 07:17:23 UTC 2018
On Monday, 1 January 2018 at 15:09:53 UTC, Lily wrote:
> I started learning D a few days ago, coming from some very
> basic C++ knowledge, and I'd like some help getting a program
> to run faster. The code is here:
> https://github.com/IndigoLily/D-mandelbrot/blob/master/mandelbrot.d
>
> Right now it runs slower than my JavaScript Mandelbrot renderer
> on the same quality settings, which is clearly ridiculous, but
> I don't know what to do to fix it. Sorry for the lack of
> comments, but I can never tell what will and won't be obvious
> to other people.
Hey! I happened to also write a Mandelbrot generator in D. It was
based of the version given on rossetacode for C[0].
Some of the optimizations I used were:
0. Use LDC. It is significantly faster.
1. Utilize the fact that the Mandelbrot set is symmetric about
the X axis.You can half the time taken.
2. Use std.parallelism for using multiple cores on the CPU
3. Use @fastmath of LDC
4. imageData.reserve(width * height * 3) before the loop
5. [1] is a great article on this specific topic
For reference, on my 28W 2 core i5, a 2560x1600 image took about
2 minutes to
render, with 500,000 iterations per pixel.
[2] is my own version.
[0]:
https://rosettacode.org/wiki/Mandelbrot_set#PPM_non_interactive
[1]:
https://randomascii.wordpress.com/2011/08/13/faster-fractals-through-algebra/
[2]:
https://github.com/Sirsireesh/Khoj-2017/blob/master/Mandelbrot-set/mandlebrot.d
More information about the Digitalmars-d-learn
mailing list