[Bf-extensions-cvs] [8753d57] master: Fix for costly pop() function calls on lists.

Lukas Tönne noreply at git.blender.org
Sat Dec 13 11:06:55 CET 2014


Commit: 8753d57c7a9a57061dce8d139476836ba0b647ce
Author: Lukas Tönne
Date:   Sat Dec 13 00:51:57 2014 +0100
Branches: master
https://developer.blender.org/rBAC8753d57c7a9a57061dce8d139476836ba0b647ce

Fix for costly pop() function calls on lists.

These are called a lot when the number of active cells (overall sampling
area) grows. Popping an element in the middle of a list is much more
expensive than popping from the end, but since we don't actually care
about ordering, we can simply swap the element for the one at the end.

===================================================================

M	object_physics_meadow/hierarchical_dart_throw.py

===================================================================

diff --git a/object_physics_meadow/hierarchical_dart_throw.py b/object_physics_meadow/hierarchical_dart_throw.py
index 2ced12f..37347a5 100644
--- a/object_physics_meadow/hierarchical_dart_throw.py
+++ b/object_physics_meadow/hierarchical_dart_throw.py
@@ -57,7 +57,9 @@ class GridLevel():
         return cell
 
     def deactivate(self, index):
-        return self.cells.pop(index)
+        c = self.cells[index]
+        self.cells[index] = self.cells.pop()
+        return c
 
     def cell_corners(self, cell):
         x0 = float(cell.i)



More information about the Bf-extensions-cvs mailing list