Tile size affects rendering times in a few ways.
First, shape:
- Partial tiles. This is the most important. The below are important, but this should always come first. Make sure your tile size can fit into a grid of the output resolution, with no overshoot. That overshoot leads to half-tiles or partial tiles, which will really slow your computer down.
- Non-square tiles. Blender usually has a harder time working with non-square tiles, probably because it takes more memory. Make sure your tiles are as square as possible.
- Non-powers of 2 length tiles. This has a slight effect, but usually Blender likes its tiles, textures, etc. nice and even-numbered in size. Powers of 2 help as well.
Second, CPU vs GPU.
The CPU often works best with smaller tiles, like 16x16 or 32x32. The reason is that it can(and will) render multiple tiles at once, so smaller tiles are more conducive. However, the GPU works best with larger tiles. This is because it only renders one tile at a time, so larger sizes are better for it.
A method to determine tile size:
- Find factors of the length and width
- Make pairs of equal or near equal factors
- Select the size based on what you are rendering on
An example:
I am rendering a 900x750 picture on GPU. Factor pairs are 10x10, 25x25, 50x50, 150x150, and some more. Since I am using GPU, I will go for a big size, e.g. 150x150. Using factors ensure tiles with no overshoot, while pairing them ensure square or near-square tiles. Finally, I can choose a tile size, in this case 150x150, and render.
Choosing the right tile size is necessary to cut down on rendering time, and even though it seems complicated, it will actually become easier over time. Greg Zaal's Auto Tile Size will do this automatically, but it seems to be broken for 2.77, sadly.