Michael M.: > * The C is very fast, Python not. > * Target: Do optimization, that Python runs nearly like C.
Python can't be fast as C for that kind of programs. Note that your original C program gives less digits than the Python program. Your original takes about ~15.2 s on my PC. The following version (I have just cleaned it up a bit, probably it can be improved) needs about ~0.7 seconds with Psyco and ~5.7 s without (Psyco compilation time and Python startup times aren't included, if you include them the timings are ~0.94 s and ~5.96 s). Compiled with ShedSkin this program needs ~0.29 s (redirecting the output to a file, because ShedSkin printing is slow still). from time import clock def compute_pi(): pi = [] a = 10000 b = d = e = g = 0 c = 5600 f = [2000] * (c + 4000 + 1) while c: d = 0 g = c * 2 b = c while b > 1: d += f[b] * a g -= 1 f[b] = d % g d = d // g g -= 1 d *= b b -= 1 c -= 14 pi.append("%04d" % int(e + d // a)) e = d % a return "".join(pi) import psyco; psyco.bind(compute_pi) start_time = clock() print compute_pi() print "Total time elapsed:", round(clock() - start_time, 2), "s" Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list