6
$\begingroup$

Not sure if BSE is a good place for such benchmarks, feel free to let me know with downvotes (question downvotes are free).

Since many operations can be done by both, which of the two should be preferred performance-wise?

(as for which is more readable, it seems obvious Transform node wins, but there's a better place to discuss it)

(Modified image by Karen Arnold)

$\endgroup$
1
  • 3
    $\begingroup$ It's hard to give a down-vote for a question with a picture like that. :D $\endgroup$ Jul 24, 2023 at 12:24

1 Answer 1

9
$\begingroup$

Blender 3.6.0

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

Only Translation Only Rotation Only Scale
12 ms! 40 ms 40 ms
Translation & Rotation All 3 Set Position
40 ms 39 ms 31-32 ms*

*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

TLDR; conclusions

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.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .