Nice post! In my experience, many built-in fractal functions is not very efficient. Compare with custom compilation function maybe better. The fastest implementation should be using CUDALink or OpenCLLink.
Clear[mandelbrot];
mandelbrot = Compile[{{X, _Real, 1}, y},
Table[
Module[{z, c},
z = 0. I; c = x + y I;
Do[z = z^2 + c, {9}];
z
],
{x, X}
], CompilationTarget -> "C", RuntimeOptions -> "Speed",
RuntimeAttributes -> {Listable}
];
resol = 4001;
Dimensions[data = mandelbrot[Range[-3., 1., 4/(resol - 1)], Range[-2., 2., 4/(resol - 1)]]] // AbsoluteTiming
Colorize[ImageResize[Image[Exp[-Abs@data]], 300], ColorFunction -> "TemperatureMap"]
Another implementation, In my PC, it's about 10 times faster than the built-in.
Clear[mandelbrot];
mandelbrot = Compile[{{X, _Real, 1}, y, maxIt},
Table[
Module[{i = 0, z, c},
z = c = x + y I;
While[i++ <= maxIt && Re[z]^2 + Im[z]^2 < 4, z = z^2 + c];
i
],
{x, X}],
CompilationTarget -> "C", RuntimeOptions -> "Speed", RuntimeAttributes -> {Listable}
];
resol=4000;
iterNum=200;
region={-3-2I,1+2I};
{{x1, x2}, {y1, y2}} = N@{Re@region, Im@region};
AbsoluteTiming[
Echo@AbsoluteTiming[data=mandelbrot[Range[x1,x2,(x2-x1)/(resol-1)],Range[y1,y2,(y2-y1)/(resol-1)],iterNum];];
colorTable=With[{n=Max[data]},
Developer`ToPackedArray@Table[If[i<n,List@@ColorData["M10DefaultFractalGradient",(i-1)/n],N@{0,0,0}],{i,n}]];
Image[colorTable[[#]]&/@data,"Real"]
]
MandelbrotSetPlot[region, MaxIterations -> iterNum, ImageResolution -> resol] // AbsoluteTiming

Attachments: