[Python-ideas] optimized VM ideas
Leonardo Santagada
santagada at gmail.com
Sat Jan 24 22:08:27 CET 2009
You should probably at least use a recognized python test suite like
pystones or richards, or use some real world applications for this.
look at the benchmarks for the pypy project for example:
http://tuatara.cs.uni-duesseldorf.de/benchmark.html
Good luck on you endeavor
On Jan 24, 2009, at 2:45 AM, joe wrote:
> Ok, I ran a little test script through CodeAnalyst. basically it is
> just a loop that does member lookups and function calls (this is in
> py2.5 btw, will have to install 3.x and test that too).
>
> The results were kindof interesting. CodeAnalyst is sample-based, so
> I don't know if it's completely reliable. It is usually reasonably
> correct though.
>
> Much of the time was spent in PyEval_EvalFrameEx (which makes sense,
> it being the code that interprets and executes the bytecode). 14633
> samples were spent in it, of which around 2000 were spent in what
> appears to be the switch jump lookup (I'm not sure, I'm not the best
> at reading assembly code). After PyEval_EvalFrameEx, the four next
> most expensive calls were PyWrapper_New (at 2879 samples)
> PyInstance_New (at 1418) PyDict_GetItem (at 1298 samples) and
> PyObject_SetAttr (at 1155).
>
> Here's the (rather hastily thrown together) script:
>
> class A:
> t = 0
>
> class Bleh:
> a = 0
> b = 0
> c = 0
>
> def __init__(self):
> self.a = A()
> self.b = []
> self.c = ""
>
> def doit(self, no=0):
> if no: return
>
> while 1:
> a = self.a
> b = self.b
> c = self.c
> self.a = a
> self.b = b
> self.c = c
> self.doit(1)
> b = Bleh()
> b.doit()
>
> So, it looks like indirect or direct threading could help (if I'm
> reading the results and asm code right). Also the attribute lookups
> did appear to take a significant portion of the time, as did
> PyInstance_New and PyWrapper_New (need to look up what those last two
> do). This is just preliminary though, that isn't a particularly good
> script for profiling, I suspect.
>
> Joe
--
Leonardo Santagada
santagada at gmail.com
More information about the Python-ideas
mailing list