On Thu, Jul 5, 2012 at 2:35 PM, Stefan Behnel <stefan...@behnel.de> wrote:
> Maciej Fijalkowski, 05.07.2012 11:01: > > On Thu, Jul 5, 2012 at 10:26 AM, Amaury Forgeot d'Arc wrote: > >> 2012/7/5 Stefan Behnel > >>> Back to that question then: > >>> > >>>> Is there a way to get readable debugging symbols in a translated PyPy > >>>> that would tell me what is being executed? > >> > >> I fear that pypy standard distribution calls "strip" on the resulting > >> binary. > >> You could translate pypy yourself, I'm quite sure it contains debug info > >> already and it's quite easy to call "make debug" anyway. > > > > Default build (not the distribution or nightly, you have to trasnlate > > yourself), contains debug info. > > Ah, yes. Given a suitably large machine and enough time to do other stuff, > that did the trick for me. Here's the result: > > http://cython.org/callgrind-pypy-nbody.png > > As you can see, make_ref() and Py_DecRef() combined account for almost 80% > of the runtime. So the expected gain from optimising the PyObject handling > is *huge*. > > The first thing that pops up from the graph is the different calls through > generic_cpy_call(). That looks way to generic for something as performance > critical as Py_DecRef(). > > Also, what's that recursive "stackwalk()" thing doing? > > Stefan > Haha :) This is related to garbage collection - it scans the stack for GC pointers to save them I think. We might think that it's a bit too much to do it for every single call there.
_______________________________________________ pypy-dev mailing list pypy-dev@python.org http://mail.python.org/mailman/listinfo/pypy-dev