root / guide / decorators.py

Revision 144:60ec3971f3f6, 1.6 kB (checked in by Tarek Ziad?? <tarek@…>, 12 months ago)

Added scripts from the book

Line 
1#!/usr/bin/python
2# -*- coding: UTF-8 -*-
3#
4# Copyright (c) 2007 Tarek Ziadé
5#
6# Authors:
7#   Tarek Ziadé <tarek@ziade.org>
8#
9# This program is free software; you can redistribute it and/or
10# modify it under the terms of the GNU General Public License
11# as published by the Free Software Foundation; either version 2
12# of the License, or (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program; if not, write to the Free Software
21# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22from test.pystone import pystones
23import time
24
25ratio = 0
26timedtest_results = []
27
28def clear():
29    global timedtest_results
30    timedtest_results = []
31
32def reset():
33    index = pystones()
34    global ratio
35    ratio = float(index[1]) / index[0]
36
37def timedtest(function):
38    """prints a pystone result"""
39    def wrap(*args, **kw):
40        start = time.time()
41        try:
42            return function(*args, **kw)
43        finally:
44            end = time.time() - start
45            if end == 0:
46                value = 0
47            else:
48                value = end * ratio
49            timedtest_results.append(value)
50    return wrap
51
52def faster(delta=0):
53    try:
54        return timedtest_results[0] - timedtest_results[1] > delta
55    finally:
56        clear()
57
58reset()
Note: See TracBrowser for help on using the browser.