mmap class has slow "in" operator

Kris Kennaway kris at FreeBSD.org
Thu May 29 18:17:05 EDT 2008


If I do the following:

def mmap_search(f, string):
	fh = file(f)
	mm = mmap.mmap(fh.fileno(), 0, mmap.MAP_SHARED, mmap.PROT_READ)

	return mm.find(string)

def mmap_is_in(f, string):
	fh = file(f)
	mm = mmap.mmap(fh.fileno(), 0, mmap.MAP_SHARED, mmap.PROT_READ)

	return string in mm

then a sample mmap_search() call on a 50MB file takes 0.18 seconds, but 
the mmap_is_in() call takes 6.6 seconds.  Is the mmap class missing an 
operator and falling back to a slow default implementation?  Presumably 
I can implement the latter in terms of the former.

Kris



More information about the Python-list mailing list