Testing on Suzanne, ✲ Ctrl5 5 subdivision levels, and this setup:
All measurements are done on the Group Output of the above, while modifying the contents of the i custom group. Throwing out 10% lowest, 10% highest, taking an average, but beware, the testing took much less scrupulosity than the description suggests.
For Entire Geometry
|Translation & Rotation
*the Set Position node had much more wild results for some reason, ranging from 29 ms to 49 ms.
It doesn't matter how many of Transform inputs you use,
I imagine [confirmed by mod nop] because a transformation matrix is created, and then applied on all the geometry. The exception is if you only translate, this is optimized by just adding a number to all coordinates. Interesting, that a similar optimization wasn't implemented for only scaling (multiply all coordinates by a number; might be updated soon). Anyway, thanks to this translation, the only scenario in which Set Position could be used as a single node, is still won by Transform. And once you start using fields, the performance plummets:
Set Position rotation: ~278 ms
Using a Selection
Let's rotate only the Suzanne's eyes.
Transform: 2245 ms
The separation and joining is very costly. If separating by faces, the time increases to 2840 ms…
Set Position 282 ms
For entire geometry always use Transform node. When using a selection, always use Set Position. Of course If you want to apply a chain of operations on the same selection, the costly process of separating and joining might be a good investment.