> Le 28 juil. 2017 à 10:14, Sven Van Caekenberghe <[email protected]> a écrit : > >> >> On 28 Jul 2017, at 09:56, Christophe Demarey <[email protected]> >> wrote: >> >> Hi Sven, >> >>> Le 27 juil. 2017 à 14:49, Sven Van Caekenberghe <[email protected]> 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 !!
