[RFC] dirstate walk speedup

Emanuele Aina em at nerd.ocracy.org
Fri Sep 28 08:46:08 CDT 2007


Bryan O'Sullivan velocizzò:

> There are two versions of the osutil module: a pure Python version, 
> which is still faster than the current code that calls os.listdir 
> directly, and a C extension module that does a few extra tricks: it 
> doesn't call lstat at all if it can avoid it, and it calls fstatat 
> instead of lstat if available, reducing dentry lookups.

Great!

Unfortunately the C extension does not compile on a Debian i386 32bit 
with Python 2.4, as readdir64 needs _LARGEFILE64_SOURCE to be defined 
and Py_ssize_t exists only in Python >= 2.5. :(

Maybe you already know, but to easily test cold cache performances you 
can free pagecache, dentries and inodes caches with 'echo 3 > 
/proc/sys/vm/drop_caches' (as root).

Also what about using ctypes to minimize the duplication between the 
pure-python and the optimized code?

While on python2.4 it is an external module since python2.5 it has been 
included in the standard library.

-- 
Buongiorno.
Complimenti per l'ottima scelta.


More information about the Mercurial-devel mailing list