Unnecessary updates (tree recalculations)?
Created by: portnov
While doing performance investigations about "bend along surface", I put output of stack trace at the beginning of do_update_general, and saw this after pressing "Update NodeTree" button:
2017-12-16 00:35:02,499 [DEBUG] sverchok.core.update_system: update:
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/utils/sv_panels_tools.py", line 82, in execute
process_tree(ng)
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/core/update_system.py", line 455, in process_tree
do_update(l, ng.nodes)
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/core/update_system.py", line 353, in do_update
do_update_general(node_list, nodes)
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/utils/profile.py", line 103, in wrapper
return func(*args, **kwargs)
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/core/update_system.py", line 312, in do_update_general
debug("update:\n"+"\n".join(traceback.format_stack()))
2017-12-16 00:35:13,689 [DEBUG] sverchok.core.update_system: update:
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/core/handlers.py", line 78, in sv_main_handler
ng.process()
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/node_tree.py", line 520, in process
process_tree(self)
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/core/update_system.py", line 455, in process_tree
do_update(l, ng.nodes)
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/core/update_system.py", line 353, in do_update
do_update_general(node_list, nodes)
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/utils/profile.py", line 103, in wrapper
return func(*args, **kwargs)
File "/home/portnov/.config/blender/2.79/scripts/addons/sverchok-master/core/update_system.py", line 312, in do_update_general
debug("update:\n"+"\n".join(traceback.format_stack()))
As far as I understand, the thing is the button calls process_tree() directly, and does not set has_changed = False; that's why sv_main_handler thinks it needs to recalculate everything yet another time immediately after first update.