ah, and another small improvement: Last week we realised that we recompile meta-classes twice with #recompile.
Changing this dropped the time for full recompile from sources on my MacBooAir from 60 seconds to 50 seconds. Marcus > On 29 Jan 2018, at 09:18, Marcus Denker <marcus.den...@inria.fr> wrote: > > Right now #embeddSourceInTrailer encoded and decodes every method to utf8. > This is fairly slow. > > We do not need to actually use utf8, the only thing important is that we > interpret the bits correctly when we decode (wide string or not?). > As a first step we then can even just utf8 encode the widestrings, there are > not many in the image. > > Benchmark: > [SystemNavigation default browseMethodsWithSourceString: 'Method source with > it' matchCase: true] timeToRun. > > sources from Disk: > "0:00:00:02.103" "0:00:00:02.265" > > CompiledMethod allInstances do: #embeddSourceInTrailer. > > "embedded sources" > "0:00:00:02.442" "0:00:00:02.924" > > embedded after speed improvements (already in Pharo7): > "0:00:00:01.273" "0:00:00:01.345" > > (fun thing a lot of that time is spend in the progress bar... without that > and not sorting twice, we are at ~0.8 seconds for full image search over all > sourceā¦) > > Interesting: > > [Smalltalk compiler evaluate: '3+4'] bench > > before: "'4,673 per second'" > after: "'6,008 per second'" > > This is because we embedd sources of Doit Methods so we can debug DoIts > without the need to decompile. After thinking about it, > I think the embedding for Doit was wrong. As the AST for Doits is transformed > (return added, temp access via arg for DoItIn:), we > have to pretty-print the AST, which is not a good idea as eval speed should > be optimised for. > > We just gain temp names, which we can do differently if we really need them. > -> we should just rely on the decompiler. I wild that change later this week. > > Marcus