Benchmarking some modules - strange result

Dave Angel davea at davea.name
Tue Feb 3 16:00:00 EST 2015


On 01/24/2015 09:36 PM, Dan Stromberg wrote:
> On Sat, Jan 24, 2015 at 6:24 PM, Chris Angelico <rosuav at gmail.com> wrote:
>> On Sun, Jan 25, 2015 at 1:11 PM, Dan Stromberg <drsalists at gmail.com> wrote:
>>> For simplicity, let's say I've been running the suite of performance
>>> tests within a single interpreter - so I test one module thoroughly,
>>> then move on to the next without exiting the interpreter.
>>> [chomp more details]
>>
>> Do the modules import stuff that's staying imported? That could
>> majorly affect performance. What about .pyc files?
>
> The modules are all imported up at the top of the script.  I haven't
> verified this, but I'm guessing the .pyc's are created at the
> beginning too.
>
>> I don't know if you can truly reset the interpreter. Snapshotting
>> sys.modules and reinstating it afterwards would help, but there are
>> other concerns too. I would personally just restart the interpreter
>> each time, frankly; it's the easiest way to be sure.
>
> Maybe so ^_^
>

I've been offline for two weeks, so sorry about the delay in responding.

There are many pieces of the Python system that do not reset.  But just 
because the C memory allocation routines do not reset to their initial 
state, running the gc between runs is not sufficient to normalize 
things.  I believe you MUST restart the interpreter between runs.

Further, the OS buffer system and the paging system are not going to be 
in the same state between runs.  years ago I knew how to clear those 
buffers in Windows, but I've never needed to look it up for Linux.

in Windows, I'd look first at one of the  sysinternalstools, such as
https://technet.microsoft.com/en-us/sysinternals/ff700229

On Linux, i'd look at the following utilities,  swapon/swapoff,

and at file  /proc/sys/vm/drop_caches
and maybe see website:  https://code.google.com/p/linux-ftools/



-- 
DaveA



More information about the Python-list mailing list