8
8
#
9
9
# NOTE: For trivial tasks the overhead of the ctype conversions
10
10
# will let the C code run slower than a CPython equivalent.
11
+ from __future__ import print_function
11
12
12
13
from tinycc import TinyCC , InlineGenerator
13
14
from ctypes import c_int
14
15
16
+ try :
17
+ range = xrange
18
+ except NameError :
19
+ pass
20
+
15
21
# create a generator object first
16
22
gen = InlineGenerator ()
17
23
@@ -87,14 +93,14 @@ def c_runner_l(n):
87
93
88
94
def py_runner_r (n ):
89
95
sum = 0
90
- for _ in xrange (n ):
96
+ for _ in range (n ):
91
97
sum += r_fib_py (20 )
92
98
return sum
93
99
94
100
95
101
def py_runner_l (n ):
96
102
sum = 0
97
- for _ in xrange (n ):
103
+ for _ in range (n ):
98
104
sum += l_fib_py (20 )
99
105
return sum
100
106
@@ -123,14 +129,14 @@ def c_runner_lc(n):
123
129
124
130
def py_runner_rc (n ):
125
131
sum = 0
126
- for _ in xrange (n ):
132
+ for _ in range (n ):
127
133
sum += r_fib_c (20 )
128
134
return sum
129
135
130
136
131
137
def py_runner_lc (n ):
132
138
sum = 0
133
- for _ in xrange (n ):
139
+ for _ in range (n ):
134
140
sum += l_fib_c (20 )
135
141
return sum
136
142
@@ -155,14 +161,14 @@ def py_runner_lc(n):
155
161
from timeit import timeit
156
162
py = timeit ('r_fib_py(20)' , setup = 'from __main__ import r_fib_py' , number = 100 )
157
163
c = timeit ('r_fib_c(20)' , setup = 'from __main__ import r_fib_c' , number = 100 )
158
- print 'recursive Python/C:' , py , c , float (py ) / c
164
+ print ( 'recursive Python/C:' , py , c , float (py ) / c )
159
165
160
166
py = timeit ('l_fib_py(20)' , setup = 'from __main__ import l_fib_py' , number = 100 )
161
167
c = timeit ('l_fib_c(20)' , setup = 'from __main__ import l_fib_c' , number = 100 )
162
- print 'looped Python/C:' , py , c , float (py ) / c
168
+ print ( 'looped Python/C:' , py , c , float (py ) / c )
163
169
164
170
# some call tests Python <--> C
165
- print 'workload - sum(100x fib(20)):'
171
+ print ( 'workload - sum(100x fib(20)):' )
166
172
assert (c_runner_l (100 ) == py_runner_l (100 ))
167
173
assert (c_runner_l (100 ) == py_runner_r (100 ))
168
174
assert (c_runner_l (100 ) == c_runner_rc (100 ))
@@ -173,19 +179,19 @@ def py_runner_lc(n):
173
179
assert (c_runner_r (100 ) == c_runner_l (100 ))
174
180
r = timeit ('c_runner_r(100)' , setup = 'from __main__ import c_runner_r' , number = 1 )
175
181
l = timeit ('c_runner_l(100)' , setup = 'from __main__ import c_runner_l' , number = 1 )
176
- print 'fib_py from C (rec/loop):' , r , l , float (r ) / l
182
+ print ( 'fib_py from C (rec/loop):' , r , l , float (r ) / l )
177
183
178
184
assert (py_runner_r (100 ) == py_runner_l (100 ))
179
185
r = timeit ('py_runner_r(100)' , setup = 'from __main__ import py_runner_r' , number = 1 )
180
186
l = timeit ('py_runner_l(100)' , setup = 'from __main__ import py_runner_l' , number = 1 )
181
- print 'fib_py from Py (rec/loop):' , r , l , float (r ) / l
187
+ print ( 'fib_py from Py (rec/loop):' , r , l , float (r ) / l )
182
188
183
189
assert (c_runner_rc (100 ) == c_runner_lc (100 ))
184
190
r = timeit ('c_runner_rc(100)' , setup = 'from __main__ import c_runner_rc' , number = 1 )
185
191
l = timeit ('c_runner_lc(100)' , setup = 'from __main__ import c_runner_lc' , number = 1 )
186
- print 'fib_c from C (rec/loop):' , r , l , float (r ) / l
192
+ print ( 'fib_c from C (rec/loop):' , r , l , float (r ) / l )
187
193
188
194
assert (py_runner_rc (100 ) == py_runner_lc (100 ))
189
195
r = timeit ('py_runner_rc(100)' , setup = 'from __main__ import py_runner_rc' , number = 1 )
190
196
l = timeit ('py_runner_lc(100)' , setup = 'from __main__ import py_runner_lc' , number = 1 )
191
- print 'fib_c from Py (rec/loop):' , r , l , float (r ) / l
197
+ print ( 'fib_c from Py (rec/loop):' , r , l , float (r ) / l )
0 commit comments