re.search much slower then grep on some regular expressions

Peter Otten __peter__ at web.de
Fri Jul 4 08:36:52 EDT 2008


Henning_Thornblad wrote:

> What can be the cause of the large difference between re.search and
> grep?

grep uses a smarter algorithm ;)
 
> This script takes about 5 min to run on my computer:
> #!/usr/bin/env python
> import re
> 
> row=""
> for a in range(156000):
>     row+="a"
> print re.search('[^ "=]*/',row)
> 
> 
> While doing a simple grep:
> grep '[^ "=]*/' input                  (input contains 156.000 a in
> one row)
> doesn't even take a second.
> 
> Is this a bug in python?

You could call this a performance bug, but it's not common enough in real
code to get the necessary brain cycles from the core developers.
So you can either write a patch yourself or use a workaround.

re.search('[^ "=]*/', row) if "/" in row else None

might be good enough.

Peter



More information about the Python-list mailing list