import gmpy import scipy import time N = 10000 tm = [] i = 0 J = 500 rng = range(1, J+1) rng = [r*N/J for r in rng] rng = [1] * 11 + rng + [N] * 10 for K in rng: i += 1 if i % 100 == 0: print i, "/", J, ":", K t0 = time.time() c1 = gmpy.comb(N, K) t1 = time.time() - t0 t0 = time.time() c2 = scipy.misc.comb(N, K) t2 = time.time() - t0 if t1 < t2: winner = "gmpy" else: winner = "scipy" tm.append([K, t1, t2, winner]) out = [str(t[0]) + "," + str(t[1]) + "," + str(t[2]) + "," + t[3] for t in tm] out = "\n".join(out) with open("time.csv", "w") as f: f.write(out)