You can also increase the rendering speed by changing the quality of the interpolation in your context before you invoke the rendering in the context. I was able to get a much faster screenshot speed with this change than by changing the scale factor.
Of course, you can use both options, and you do not need to set the quality to None, Low was still an improvement for me.
CGContextSetInterpolationQuality(ctx, kCGInterpolationNone);
Also, for the scaling factor, as indicated in the previous answer, make sure your new scaling factor is a multiple of the original, i.e. if the screen scale is 1.0, you should do something like .5, not .8. Using .8 will cause the render to compute more information (because it is not an even scale) and thus makes it slower than using 1.0 because.
Of course, this will not be a good solution for everyone.
maxpower May 9 '13 at 2:39
source share