Skip to content

Instantly share code, notes, and snippets.

@tinnet
Created July 6, 2011 08:07
Show Gist options
  • Save tinnet/1066803 to your computer and use it in GitHub Desktop.
Save tinnet/1066803 to your computer and use it in GitHub Desktop.
string compare vs. precompiled regex
#Took: 6.605544 seconds
#Took: 15.969022 seconds
#Took: 4.270395 seconds
#Took: 3.229852 seconds
import re
import time
DATETIME_BLACKLIST = ['1970-01-01 01:00:00', '1970-01-01 00:00:00', '0000-00-00 00:00:00']
RE_BLACK = [re.compile('1970-01-01.*'), re.compile('0000-00-00.*')]
#RE_BLACK = [re.compile('(0000|1970).*')]
text = 'lala %d'
t_start = time.time()
for i in xrange(10000000):
if text in DATETIME_BLACKLIST:
continue
tmp = text % i
t_taken = time.time() - t_start
print 'Took: %f seconds' % (t_taken)
t_start = time.time()
for i in xrange(10000000):
for pattern in RE_BLACK:
if pattern.match(text):
continue
tmp = text % i
t_taken = time.time() - t_start
print 'Took: %f seconds' % (t_taken)
lala = dict()
lala['lala'] = 'lalalalalalala'
t_start = time.time()
for i in xrange(10000000):
tmp1 = lala['lala']
tmp2 = lala['lala']
tmp3 = lala['lala']
tmp4 = lala['lala']
tmp5 = lala['lala']
tmp6 = lala['lala']
tmp7 = lala['lala']
t_taken = time.time() - t_start
print 'Took: %f seconds' % (t_taken)
lala = dict()
lala['lala'] = 'lalalalalalala'
t_start = time.time()
for i in xrange(10000000):
tmp1 = lala['lala']
tmp2 = tmp1
tmp3 = tmp1
tmp4 = tmp1
tmp5 = tmp1
tmp6 = tmp1
tmp7 = tmp1
t_taken = time.time() - t_start
print 'Took: %f seconds' % (t_taken)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment