[Bf-blender-cvs] [3a41e0f611b] master: Tests: Automated geometry nodes benchmark
Hans Goudey
noreply at git.blender.org
Sun Nov 27 00:45:16 CET 2022
Commit: 3a41e0f611bd8a64df9ce4b93386569d8f0cb498
Author: Hans Goudey
Date: Sat Nov 26 17:15:55 2022 -0600
Branches: master
https://developer.blender.org/rB3a41e0f611bd8a64df9ce4b93386569d8f0cb498
Tests: Automated geometry nodes benchmark
Add a script for a very simple object evaluation benchmark.
There could be more advanced ways of measuring the time
per-node or per modifier, but this just loads the file, tags
the active object for a reevaluation, and times how long
that takes.
Differential Revision: https://developer.blender.org/D16604
===================================================================
A tests/performance/tests/geometry_nodes.py
===================================================================
diff --git a/tests/performance/tests/geometry_nodes.py b/tests/performance/tests/geometry_nodes.py
new file mode 100644
index 00000000000..3505f5278bd
--- /dev/null
+++ b/tests/performance/tests/geometry_nodes.py
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: Apache-2.0
+
+import api
+import os
+
+
+def _run(args):
+ import bpy
+ import time
+
+ # Evaluate objects once first, to avoid any possible lazy evaluation later.
+ bpy.context.view_layer.update()
+
+ # Tag all objects with geometry nodes modifiers to be recalculated.
+ for ob in bpy.context.view_layer.objects:
+ for modifier in ob.modifiers:
+ if modifier.type == 'NODES':
+ ob.update_tag()
+ break
+
+ start_time = time.time()
+ bpy.context.view_layer.update()
+ elapsed_time = time.time() - start_time
+
+ result = {'time': elapsed_time}
+ return result
+
+
+class GeometryNodesTest(api.Test):
+ def __init__(self, filepath):
+ self.filepath = filepath
+
+ def name(self):
+ return self.filepath.stem
+
+ def category(self):
+ return "geometry_nodes"
+
+ def run(self, env, device_id):
+ args = {}
+
+ result, _ = env.run_in_blender(_run, args, [self.filepath])
+
+ return result
+
+
+def generate(env):
+ filepaths = env.find_blend_files('geometry_nodes/*')
+ return [GeometryNodesTest(filepath) for filepath in filepaths]
More information about the Bf-blender-cvs
mailing list