d1df97bd4817cb7ebaaccd0a99b014a29692ab39
I observed allocation becoming a bottleneck when building the depsgraph with scenes with many simple data-blocks. One of the main culprits was the struct that encodes relations between nodes in the graph. Instead of allocating each `Relation` with a separate allocation call, combine them into a `LinearAllocator`. That is must faster because it allocates in large chunks and just bumps an offset on each allocation. In a test file with 30 thousand cube objects, I observe a 1.18x improvement in depsgraph evaluation time, from 1370 to 1163 ms. The depsgraph isn't completely re-allocated when it's rebuilt, so the allocator added in this PR has to be cleared manually. In the future, it can be used for other structs or potentially strings. Pull Request: https://projects.blender.org/blender/blender/pulls/137303
…
Blender
Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.
Project Pages
Development
License
Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.
See blender.org/about/license for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
