1ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehimport re
2ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehimport time
3ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
4ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehdef main():
5ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    s = "\13hello\14 \13world\14 " * 1000
6ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    p = re.compile(r"([\13\14])")
7ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    timefunc(10, p.sub, "", s)
8ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    timefunc(10, p.split, s)
9ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    timefunc(10, p.findall, s)
10ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
11ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehdef timefunc(n, func, *args, **kw):
12ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    t0 = time.clock()
13ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    try:
14ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        for i in range(n):
15ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh            result = func(*args, **kw)
16ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        return result
17ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh    finally:
18ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        t1 = time.clock()
19ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        if n > 1:
20ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh            print n, "times",
21ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh        print func.__name__, "%.3f" % (t1-t0), "CPU seconds"
22ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh
23ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehmain()
24