Here’s an example of a program that demonstrates pretty consistent speedups with the JIT enabled. It’s a rudimentary version of the Mandelbroit fractal:
from time import perf_counter
import sys
print ("JIT enabled:", sys._jit.is_enabled())
WIDTH = 80
HEIGHT = 40
X_MIN, X_MAX = -2.0, 1.0
Y_MIN, Y_MAX = -1.0, 1.0
ITERS = 500
YM = (Y_MAX - Y_MIN)
XM = (X_MAX - X_MIN)
def iter(c):
z = 0j
for _ in range(ITERS):
if abs(z) > 2.0:
return False
z = z ** 2 + c
return True
def generate():
start = perf_counter()
output = []
for y in range(HEIGHT):
cy = Y_MIN + (y / HEIGHT) * YM
for x in range(WIDTH):
cx = X_MIN + (x / WIDTH) * XM
c = complex(cx, cy)
output.append("#" if iter(c) else ".")
output.append("\n")
print ("Time:", perf_counter()-start)
return output
print("".join(generate()))
When the program starts running, it lets you know if the JIT is enabled and then produces a plot of the fractal to the terminal along with the time taken to compute it.
With the JIT enabled, there’s a fairly consistent 20% speedup between runs. If the performance boost isn’t obvious, try changing the value of ITERS to a higher number. This forces the program to do more work, so should produce a more obvious speedup.



