Call for attention - context handlers and validation procs
-
That's rich! The opening scene strikes a cord, it's me writing an app:-)
-
I made a little sniffer script that will log the scripts that creates context handlers. Lets one easier inspect which scripts are adding context handlers.
I found
xLine
to be processing the whole selection. I'll be looking further into what scripts have inefficient context handlers. At the moment it takes many seconds for me when I right click a large set of selected entities.(Removed - See first post)
Type
TT.list_context_handlers
to get a list of attached context handlers in the Ruby Console. -
I just updated the first post with the debug script - it now benchmarks the handlers, outputting the time they take to process to the Ruby Console.
-
Sample output for a selection of about 100K entities:
### Context Handler ### 2D#loader.rb:181:in
activate' [...] 2D#.rb:44
0.0 secondsContext Handler
bezier.rb:501 [...] bezier.rb:501
0.006 secondsContext Handler
parametric.rb:320 [...] (eval):2696
0.0 secondsContext Handler
(eval):103:in `load' [...] pb_loader.rb:9
0.0 secondsContext Handler
tt_bitmap2mesh.rb:29 [...] tt_proxy_loader.rb:28
0.0 secondsContext Handler
tt_image_opacity.rb:30 [...] tt_proxy_loader.rb:28
0.0 secondsContext Handler
ui_manager.rb:261:in `build_ui' [...] tt_selection_toys.rb:240
0.004 secondsContext Handler
xLine.rb:51 [...] xLine.rb:51
0.0 secondsContext Handler
Lib6Plugin.rb:656:in `build_config_handlers' [...] ZLoader__FredoScale.rb:24
0.0 secondsContext Handler
Lib6Plugin.rb:656:in `build_config_handlers' [...] ZLoader__OnSurface.rb:26
0.489 secondsContext Handler
(eval):299:in `initialize' [...] dynamiccomponents.rb:38
0.0 secondsContext Handler
webtextures_loader.rb:886 [...] webtextures.rb:22
0.0 secondsContext Handler
bezierspline_main.rb:2413:in
load_all_menus' [...] extensions.rb:36:in
load'
5.657 seconds`(Note I had modified xLine and Selection Toys prior to this test)
-
@thomthom said:
Sample output for a selection of about 100K entities:
Context Handler
bezierspline_main.rb:2413:in
load_all_menus' [...] extensions.rb:36:in
load'
5.657 seconds[/ruby]I fixed the one for BezierSpline, with an upgrade.
see http://forums.sketchucation.com/viewtopic.php?f=323&t=13563&p=100509#p100509Fredo
-
-
Reminds me of something simular I seem to have in big models when rightclicking a material.
The rightclick window just doesn't pop-up -
@pout said:
Reminds me of something simular I seem to have in big models when rightclicking a material.
The rightclick window just doesn't pop-upYea - I've noticed that too. Very annoying. But that menu isn't accessible to ruby plugins. So I think that one is on Google's shoulders.
-
@unknownuser said:
@thomthom said:
Sample output for a selection of about 100K entities:
Context Handler
bezierspline_main.rb:2413:in
load_all_menus' [...] extensions.rb:36:in
load'
5.657 seconds[/ruby]I fixed the one for BezierSpline, with an upgrade.
see http://forums.sketchucation.com/viewtopic.php?f=323&t=13563&p=100509#p100509Fredo
Bezierspline_main is still sort-of slow for me - it takes 8 seconds for the context menu to pop-up for 75,000 selected entities. (I admit to having a sub-standard pc.)
-
@jim said:
Bezierspline_main is still sort-of slow for me - it takes 8 seconds for the context menu to pop-up for 75,000 selected entities. (I admit to having a sub-standard pc.)
Jim,
I made a change in the script.
see main post on BezierSplineIs is better with this release
Thanks
Fredo
-
-
Are you saying that each and every plugin is "polled" each time you wish to do something whether you "invoke" that/those plugins or not? If so, is that efficient? Keep in mind I don't know the terminology, and I certainly don't fully understand.
-
@mitcorb said:
Are you saying that each and every plugin is "polled" each time you wish to do something whether you "invoke" that/those plugins or not? If so, is that efficient? Keep in mind I don't know the terminology, and I certainly don't fully understand.
Not every plugin, but when a plugin want to add a context menu a function is run - and if the plugin tried to evaluate the whole selection or do any processor expensive calculations in this function it'll delay the context menu.
-
Ok, that makes some sense, thanks. Evidently, the context menu is lower in priority?
-
not really... the context menu is "built on the fly"...
The menu needs to know what items and submenus it will need to display. It cannot know what they will be until Sketchup processes all the context_menu_handlers.
Advertisement