[Pharo-project] HelpBrowser takes too much time to open

Alexandre Bergel alexandre.bergel at me.com
Sat Apr 30 17:35:35 CEST 2011


> in fact cannot the cache be class side?   beucase now each time you do HelpBrowser open, you compute again the cache....but I am not sure if they should change amont different opened browsers

Could be. It is important to have a scenario.
The problem is getting the pragmas from the whole system. 

If you put the cache on the class side, then you will indeed need to reset the cache, by registering to the system events. The reset has to be performed at each installation of a new help. This is a bit more work. Shall we do to that direction? I think it makes sense.

Alexandre

> 
> 
> On Sat, Apr 30, 2011 at 5:07 PM, Alexandre Bergel <alexandre.bergel at me.com> wrote:
> Yes, but this depends what is the expected behavior of the browser. I like the Agile approach that says you're done when all the tests are green :-)
> 
> Alexandre
> 
> 
> On 30 Apr 2011, at 10:02, Mariano Martinez Peck wrote:
> 
> > Yes, but I have no idea. Another thing is that now HelpBrowser should implement something like:
> >
> > HelpBrowser >> cleanUp
> > self resetChache
> >
> > >> resetCache
> > helpTopicCache := nil
> >
> > So that the class is automatically cleaned in #cleanUpForRelease and friends... right now since Smalltalk cleanUp sends to all classes which understand such method, just implemented that should be enough.
> >
> > Cheers
> >
> > Mariano
> >
> >
> > On Sat, Apr 30, 2011 at 4:58 PM, Alexandre Bergel <alexandre.bergel at me.com> wrote:
> > You're right Mariano. However, I do not know if the help browser gets updated if you have a browser opened and add a new help in the system. In any case, this is a requirement that is not formalized by the unit tests.
> >
> > I think that ideally, the reset cache should be done when receiving an event of a class creation that is a help.
> >
> > Alexandre
> >
> >
> > On 30 Apr 2011, at 09:29, Mariano Martinez Peck wrote:
> >
> > > Cool! Thanks Alexandre. Now...the problem with the cache is always the same...when to invalidate them.
> > > In this case, when do I need to set helpTopicCache to nil. I guess that if you create a help, then it is "automatically" detected when you open the browser.
> > > Now, you have to explicitly flush the cache, haven't you?  So...is there some documentation of HelpSystem that should be updated to reflect that ?
> > >
> > > Thanks
> > >
> > > On Sat, Apr 30, 2011 at 3:15 AM, Alexandre Bergel <alexandre.bergel at me.com> wrote:
> > > > MessageTally time: [HelpBrowser open]   between 2 seconds in Cog and with a regular VM between 6 and 8....
> > > > is there an easy way to improve it ?
> > > >
> > > > Alexandre, do you want another place where to put a cache like Metacello's currentVersion?   ;)
> > >
> > > :-)
> > > Sure. Easy.
> > >
> > > SystemHelp>>allSystemHelpPragmas takes time. When you open a browser, the method HelpBrowser>>open is called once and SystemHelp>>allSystemHelpPragmas twice. Easy to suspect that a cache is missing.
> > >
> > > So, if you define
> > > -=-=-=-=-=-=-=-=-=
> > > HelpBrowser>>helpTopic
> > >        ^ helpTopicCache ifNil: [ helpTopicCache := rootTopic asHelpTopic ]
> > > -=-=-=-=-=-=-=-=-=
> > >
> > > and adapt HelpBrowser>>refresh you win 50% of execution time.
> > >
> > > Here is it:
> > >
> > >
> > > http://code.google.com/p/pharo/issues/detail?id=4126
> > >
> > > Before this fix, I have:
> > > [HelpBrowser open] timeToRun
> > > => 6099
> > >
> > > After the fix I have:
> > > [HelpBrowser open] timeToRun
> > > => 3094
> > >
> > > Naturally, tests are kept green.
> > >
> > > Cheers,
> > > Alexandre
> > >
> > > --
> > > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> > > Alexandre Bergel  http://www.bergel.eu
> > > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > --
> > > Mariano
> > > http://marianopeck.wordpress.com
> > >
> >
> > --
> > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> > Alexandre Bergel  http://www.bergel.eu
> > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > --
> > Mariano
> > http://marianopeck.wordpress.com
> >
> 
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> -- 
> Mariano
> http://marianopeck.wordpress.com
> 

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.








More information about the Pharo-project mailing list