[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