Hello Maciej and Armin, Glad you think this is a valuable benchmark, since I provided it mostly for selfish reasons ;) I've done a quick test similar to Armin's, rendering the original 4-page document over and over again. While I can see the speed improving, it still doesn't reach CPython's performance. I haven't found the time yet to try with a longer document. I'll render a book from project Gutenberg soon and report back here. Let me know if there's anything else I can do. Bengt Richter raised an interesting question (but his message didn't seem to make it to the list):
Is there any way that jit results could be cached to some degree, in one or more files, to give the next execution of a program a warmer start?
I remember seeing a similar question before. IIRC one suggestion was to spawn a daemon process. I suppose that could work for RinohType, but I'm also interested to hear if it would be possible to have PyPy save the JIT state to a file on termination. Cheers, Brecht ---- On Sun, 02 Mar 2014 22:15:28 +0100 Maciej Fijalkowski<fijall@gmail.com> wrote ----
I must say I've been trying to understand what's going on and I'm failing so far. Thanks for a valuable benchmark! And yes, we're working on improving the warmup time (ETA unknown though)
---- On Sun, 02 Mar 2014 17:01:32 +0100 Armin Rigo<arigo@tunes.org> wrote ----
On 1 March 2014 23:34, Brecht Machiels <brecht@mos6581.org> wrote:
While PyPy2 performs better than PyPy3, it's still much slower than CPython. Is RinohType hitting a weak spot in PyPy? Any hints on what I can do to improve performance?
It's not really helpful, but the warm-up time is the first issue here. If I edit template.py to run it e.g. 10 times instead of only once, the speed grows quickly by a factor of 4. It means your code, for some reason, exhibits slow warm-ups (not the worst we've seen, but I agree it's a lot). It would be interesting to know if you have a similar speed-up when processing a single 10-times-larger document instead of 10 times the same small document :-)
A bientôt,
Armin.