On Sun, Jan 1, 2012 at 11:13 AM, Laurence Tratt <laurie@tratt.net> wrote:
On Sun, Jan 01, 2012 at 07:02:14PM +0200, Maciej Fijalkowski wrote:
Here's an example (hopefully a decent one!):
http://pastebin.com/51QpPD7C so for example here, tracing has taken 0.8s out of 2.5 total (a lot) + 0.2s for the backend. If you can post some example I can probably look at traces.
For example - is the loop iteration from above a good one?
I don't know if it's a good one or not :) This is a real program executing under the Converge JIT - the Converge compiler. If you have a checkout of the Converge VM and have built the VM with a JIT, you can recreate this by doing:
$ cd compiler $ PYPYLOG=jit-summary:stats ../vm/converge convergec -o Compiler/Code_Gen.cvb Compiler/Code_Gen.cv
Also, there were 16 loops aborted because trace run out for too long. That might mean a lot of things.
I'm going to assume this is because (at least as I've done things so far) the VM is effectively inlining all calls to RPython-level functions (in other words, if the bytecode calls a builtin function, the latter is inlined). It's not clear to me whether this is entirely desireable - sometimes it might be sensible, but often not. How does PyPy handle this? Does it have a blanket "don't look inside builtin functions" for example?
Laurie -- Personal http://tratt.net/laurie/ The Converge programming language http://convergepl.org/ https://github.com/ltratt http://twitter.com/laurencetratt _______________________________________________ pypy-dev mailing list pypy-dev@python.org http://mail.python.org/mailman/listinfo/pypy-dev
Take a look at pypy/module/pypyjit/policy.py it shows the JITPolicy for which functions can be inlined. Alex -- "I disapprove of what you say, but I will defend to the death your right to say it." -- Evelyn Beatrice Hall (summarizing Voltaire) "The people's good is the highest law." -- Cicero