--------------------------------------------------------------------------------
The knobChanged knob can be useful in some cases, as it allows you to package 
your knobChanged code with a Nuke script or gizmo, rather than having to 
include external registration and callback code. However, if you’ve got an 
established pipeline, external registration is easier to manage and maintain, 
on top of being more efficient to execute.

I don’t know the details of how the knobChanged knob’s code is executed, but if 
I had to guess, I would expect that every time the callback fires, Nuke fetches 
the code string from the knob and passes it to the Boost Python exec function, 
which leads to the code string being byte-compiled and executed by the embedded 
interpreter.

Compare this to the standard callback registration approach, where all of the 
callback code is implemented in actual Python modules, and thus byte-compiled 
once at runtime. All Nuke has to do in that scenario is call the main entry 
point, which I would expect to be a static reference to a Python object.

So, given equivalent code running in the two different scenarios, it isn’t 
particularly surprising that the pre-registered callbacks perform better, even 
though the callback fetching and execution code is all pure Python.

-Nathan



From: Michael Garrett 
Sent: Wednesday, March 06, 2013 3:30 PM
To: Nuke Python discussion 
Subject: [Nuke-python] efficiency of knobChanged hidden knob

Since it's been around for some time now, I'd be interested to hear what others 
feel about using the knobChanged hidden knob in a gizmo, considering how often 
it gets triggered.  

I've found that even a basic conditional for disabling a knob if a checkbox is 
on, can slow Nuke down if there are a few instances of this node. This really 
makes it seem unacceptable to use.

Should I look at using knobChanged functions defined in the plugin path instead?

It makes the case for learning to write plugins seem more compelling since all 
that kind of stuff all seems to come "for free".

Thanks,

Michael


--------------------------------------------------------------------------------
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Reply via email to