<div dir="ltr">Hi David,<div><br></div><div>I noticed in the vtkAbstractTransform class that there are a set of mutexes that guard the Update() and GetInverse() methods. Are these necessary? They were introduced in this commit:</div>

<div><br></div><div><div>commit 793c003c5064ff90bfee3769d6b85cc4c75104f6</div><div>Author: David Gobbi <<a href="mailto:david.gobbi@gmail.com">david.gobbi@gmail.com</a>></div><div>Date:   Wed May 3 16:53:37 2000 -0400</div>

<div><br></div><div>    ERR: The way that GetInverse worked, there was no easy way to fix the</div><div>         existing memory leak.  So the GetInverse mechanism has changed (and</div><div>         is more efficient than it used to be) but significant other changes</div>

<div>         were necessary.</div></div><div><br></div><div><br></div><div style>I'm looking at the performance of some filters, and vtkGlyph3D makes heavy use of the transform classes to position/scale the glyphs before copying them into the output. Trouble is, each new transform dynamically allocates two mutexes, and building up the transforms requires entering critical sections. Benchmarking Glyph3D shows that removing these mutexes cuts out about 10% off of the time it takes the filter to update. I imagine this overhead is hurting performance in other instances, too.</div>

<div style><br></div><div style>Since VTK isn't typically thread-safe and most uses of the transforms (that I'm aware of) are single-threaded, it seems reasonable to me that these should be removed. Is there any reason to keep them?</div>

<div style><br></div><div style>Thanks,</div><div style>Dave</div></div>