[Python-Dev] Dynamic bytecode analysis
M.-A. Lemburg
mal@lemburg.com
Thu, 27 Feb 2003 10:44:49 +0100
damien morton wrote:
> Im not sure how I could properly excersise Zope, and Mailman doesn't run
> under windows. PySol is do-able. Any other suggestions as to apps worthy
> of profiling?
Anything with more than 10kloc Python code should do, I guess.
> Would the python standard library unit tests qualify?
Nope :-)
>>-----Original Message-----
>>From: M.-A. Lemburg [mailto:mal@lemburg.com]
>>Sent: Thursday, 27 February 2003 03:41
>>To: Damien Morton
>>Cc: python-dev@python.org
>>Subject: Re: [Python-Dev] Dynamic bytecode analysis
>>
>>
>>Damien Morton wrote:
>>
>>>So I enhanced the PVM dynamic execution profiler to keep track of
>>>quads of instructions rather than just pairs. Running it on
>>
>>PyStone, I
>>
>>>get the following results:
>>
>>pystone is *not* your typical Python application. If you want
>>some interesting data, I'd suggest to use applications like
>>Zope, PySol, Mailman, etc. as basis.
>>
>>The easiest way to do this is by instrumenting the Python
>>interpreter used by all these applications and have it write
>>its data to a pickle every now and then. Here's an example
>>from the Python 1.5 days:
>>
>>Opcode frequencies:
>>--------------------------------------------------------------
>>----------
>> SET_LINENO(127) : 12036
>>================================
>> LOAD_FAST(124) : 10366 ===========================
>> LOAD_ATTR(105) : 4565 ============
>> LOAD_CONST(100) : 4549 ============
>> POP_TOP( 1) : 3756 =========
>> STORE_FAST(125) : 3580 =========
>> CALL_FUNCTION(131) : 2558 ======
>> JUMP_IF_FALSE(111) : 2142 =====
>> LOAD_GLOBAL(116) : 2056 =====
>> COMPARE_OP(106) : 2001 =====
>> RETURN_VALUE( 83) : 1593 ====
>> FOR_LOOP(114) : 1363 ===
>> BINARY_ADD( 23) : 1133 ===
>> STORE_NAME( 90) : 1062 ==
>> JUMP_ABSOLUTE(113) : 835 ==
>> MAKE_FUNCTION(132) : 753 ==
>> SETUP_LOOP(120) : 568 =
>> POP_BLOCK( 87) : 536 =
>> JUMP_FORWARD(110) : 503 =
>> 32( 32) : 442 =
>> JUMP_IF_TRUE(112) : 438 =
>> LOAD_NAME(101) : 425 =
>> DUP_TOP( 4) : 421 =
>> UNARY_NEGATIVE( 11) : 411 =
>> SETUP_EXCEPT(121) : 410 =
>> 31( 31) : 409 =
>>
>>--
>>Marc-Andre Lemburg
>>eGenix.com
>>
>>Professional Python Software directly from the Source (#1,
>>Feb 27 2003)
>> >>> Python/Zope Products & Consulting ...
>>http://www.egenix.com/
>> >>> mxODBC, mxDateTime, mxTextTools
>>... http://python.egenix.com/
>>______________________________________________________________
>>__________
>>Python UK 2003, Oxford:
>>33 days left
>>EuroPython 2003, Charleroi, Belgium:
>>117 days left
>>
>>
>
>
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> http://mail.python.org/mailman/listinfo/python-dev
--
Marc-Andre Lemburg
eGenix.com
Professional Python Software directly from the Source (#1, Feb 27 2003)
>>> Python/Zope Products & Consulting ... http://www.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
Python UK 2003, Oxford: 33 days left
EuroPython 2003, Charleroi, Belgium: 117 days left