Hi Jasper, On Thu, May 16, 2013 at 9:14 AM, Jasper Spaans <spa...@fox-it.com> wrote: > I was toying around a bit with writing a statistical profiler in python, > and came up with https://gist.github.com/jap/5584946
It's a statistical profiler based on signals: whenever a signal is delivered, it checks where it is and counts. What occurs is that the signal delivery points are a bit more restricted when running JITted code. The inner loop of your example: > for t in range(100000): > with ProfilerContext("c2"): > s = s + "a" is quickly compiled to machine code that does this: guard that t < 1000000 append "c2" to the list local_context_stack.data s = s + "a" remove the last item from local_context_stack.data guard that there was no signal jump back to the top of the loop So it only checks for signals once per loop at the end, instead of (as usual when interpreting) at random points during the loop. Signals will never be delivered when "c2" is in the local_context_stack... A bientôt, Armin. _______________________________________________ pypy-dev mailing list pypy-dev@python.org http://mail.python.org/mailman/listinfo/pypy-dev