Could you see how many images you can create if you comment on the following line in your first method:
[imageData writeToFile:finalPath atomically:YES]
The reason I say that you are going to spend a lot of time writing this image to disk. It would be interesting to see how this is done without writing the image to disk. At least, this is how you learn, all the time is spent on creating an image and storing an image. Or you could do, as another poster was mentioned, and use the Tools on time for how long you are in each method.
If it turns out that writing images to disk takes too much time, I suggest trying to implement a caching mechanism that will cache images in memory and later write them to disk.
It can also help to call writeToFile: atomically: on the background thread.
source share