Le 21/02/2015 23:18, Tudor Girba a écrit :
Hi,
On Sat, Feb 21, 2015 at 11:03 PM, Thierry Goubier <thierry.goubier@gmail.com mailto:thierry.goubier@gmail.com> wrote:
Hi Doru, the low hanging fruit is the time needed to create a PP parser (time for new).
I still do not see the low hanging fruit. Do you have a concrete idea of how to make it faster?
Look at that instantiation code, cache the result. - Make a copy when you instantiate. - Recreate / recompute if you execute a method extending the parser on the resulting object. - Have a copy parser method which cleanly creates a new instance.
(i.e. summarized as: new should memoize and make a copy of the memoized version)
Or look into reflection for making some methods trigger code generation, as if parser combinators were written in pragmas :)
I profiled PPSmalltalkParser over a bench used by Lucas Renggli a few years ago, and PPSmalltalkParser spends half the time in "new" (and it is a lot slower than it used to be).
What does "a lot slower" mean?
3 times slower in Pharo 4.
And this benchmark does not show any effect linked to long files; it's only a list of fairly short methods (all Object and Morph methods).
Thierry