PageRenderTime 44ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/pypy/rlib/rsre/test/targetrsre.py

https://bitbucket.org/varialus/jyjy
Python | 65 lines | 49 code | 11 blank | 5 comment | 7 complexity | fb20187033b81a7b0e15b3bfa4f634f4 MD5 | raw file
  1. #!/usr/bin/env python
  2. from pypy.rlib.rarithmetic import intmask
  3. from pypy.rlib.rsre import rsre_core
  4. import os, time
  5. # <item>\s*<title>(.*?)</title>
  6. r_code1 = [17, 18, 1, 21, 131091, 6, 6, 60, 105, 116, 101, 109, 62, 0,
  7. 0, 0, 0, 0, 0, 19, 60, 19, 105, 19, 116, 19, 101, 19, 109, 19, 62, 29,
  8. 9, 0, 65535, 15, 4, 9, 2, 0, 1, 19, 60, 19, 116, 19, 105, 19, 116, 19,
  9. 108, 19, 101, 19, 62, 21, 0, 31, 5, 0, 65535, 2, 1, 21, 1, 19, 60, 19,
  10. 47, 19, 116, 19, 105, 19, 116, 19, 108, 19, 101, 19, 62, 1]
  11. def read(filename):
  12. fd = os.open(filename, os.O_RDONLY, 0666)
  13. if fd < 0:
  14. raise OSError
  15. end = os.lseek(fd, 0, 2)
  16. os.lseek(fd, 0, 0)
  17. data = os.read(fd, intmask(end))
  18. os.close(fd)
  19. return data
  20. def search_in_file(filename):
  21. data = read(filename)
  22. p = 0
  23. while True:
  24. res = rsre_core.search(r_code1, data, p)
  25. if res is None:
  26. break
  27. matchstart, matchstop = res.span(1)
  28. assert 0 <= matchstart <= matchstop
  29. print '%s: %s' % (filename, data[matchstart:matchstop])
  30. p = res.span(0)[1]
  31. # __________ Entry point __________
  32. def entry_point(argv):
  33. start = time.time()
  34. for fn in argv[1:]:
  35. search_in_file(fn)
  36. stop = time.time()
  37. print stop - start
  38. return 0
  39. # _____ Define and setup target ___
  40. def target(*args):
  41. return entry_point, None
  42. # _____ Pure Python equivalent _____
  43. if __name__ == '__main__':
  44. import re, sys
  45. r = re.compile(r"<item>\s*<title>(.*?)</title>")
  46. start = time.time()
  47. for fn in sys.argv[1:]:
  48. f = open(fn, 'rb')
  49. data = f.read()
  50. f.close()
  51. for title in r.findall(data):
  52. print '%s: %s' % (fn, title)
  53. stop = time.time()
  54. print '%.4fs' % (stop - start,)