> Le 28 juil. 2017 à 10:14, Sven Van Caekenberghe <s...@stfx.eu> a écrit :
> 
>> 
>> On 28 Jul 2017, at 09:56, Christophe Demarey <christophe.dema...@inria.fr> 
>> wrote:
>> 
>> Hi Sven,
>> 
>>> Le 27 juil. 2017 à 14:49, Sven Van Caekenberghe <s...@stfx.eu> a écrit :
>>> 
>>> Hi,
>>> 
>>> I instrumented WorkingSession with a log collection that holds timing info 
>>> for each #startUp: executed. In a clean Pharo 6 image, 62 were run. Most of 
>>> them resulted in a 0ms execution time (#millisecondsToRun: i.e. they were 
>>> faster than 1ms). Here is the list of the non zero ones:
>>> 
>>> 1ms startup:true a ClassSessionHandler(ProcessorScheduler)
>>> 1ms startup:true a ClassSessionHandler(OSPlatform)
>>> 6ms startup:true a ClassSessionHandler(ExternalObject)
>>> 1ms startup:true a ClassSessionHandler(DiskStore)
>>> 5ms startup:true a ClassSessionHandler(SmalltalkImage)
>>> 9ms startup:true a ClassSessionHandler(DisplayScreen)
>>> 1ms startup:true a ClassSessionHandler(Cursor)
>>> 41ms startup:true a ClassSessionHandler(FT2Handle)
>>> 238ms startup:true a ClassSessionHandler(FreeTypeSettings)
>>> 1ms startup:true a ClassSessionHandler(WorldMorph)
>>> 14ms startup:true a ClassSessionHandler(OmSessionStore)
>>> 
>>> For a total of 318ms
>>> 
>>> I think being able to inspect the WorkingSession and see this list 
>>> (ordered, with timing info) would be generally useful (and low cost). Even 
>>> headless, we could access the list using eval.
>> 
>> Yes, it is a nice feature.
> 
> I basically did something similar to what Phil/Clement seem to have done:
> 
> - added a local instance variable #log to WorkingSession holding an 
> OrderedCollection
> - instrument #runStartup: and #executeDeferredStartupActions: like this
> 
> runStartup: isImageStarting
>       self
>               runList: manager startupList
>               do: [ :each | | ms |
>                       ms := Time millisecondsToRun: [ each startup: 
> isImageStarting ].
>                       log add: { ms. #startup:. isImageStarting. each } ].
>       self executeDeferredStartupActions: isImageStarting
> 
> but if we do this for real, we better use a real object (like a log event, 
> like SessionActionExecuted)
> 
>> Do you have the same thing for #shutdown: ?
> 
> I considered that, but if the session shuts down, it will disappear, hence 
> the log will be lost, no ?

Yes, an option could be to keep an history of sessions (or just the last one?)

> Unless we also write it (optionally) to a file.

That is difficult because while the shutdown list is processed, you loose 
functionalities and FileSystem is one of them.

> 
>>> Sven
>>> 
>>> PS: The code of SessionManager/WorkingSession was very readable, well done 
>>> Christophe !
>> 
>> Thanks but then you should also thanks Guille and Pablo as it was a joint 
>> work ;)
> 
> Thank you Guille and Pablo !!


Reply via email to