Le 28 juil. 2017 à 10:14, Sven Van Caekenberghe <sven@stfx.eu> a écrit :
On 28 Jul 2017, at 09:56, Christophe Demarey <christophe.demarey@inria.fr> wrote:
Hi Sven,
Le 27 juil. 2017 à 14:49, Sven Van Caekenberghe <sven@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 !!