code optimization (calc PI) / Full Code of PI calc in Python and C.
Marc 'BlackJack' Rintsch
bj_666 at gmx.net
Thu Jan 4 02:46:58 EST 2007
More information about the Python-list mailing list
Thu Jan 4 02:46:58 EST 2007
- Previous message (by thread): MI5 Persecution: Counter-surveillance sweep by Nationwide Investigations Group
- Next message (by thread): code optimization (calc PI) / Full Code of PI calc in Python and C.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
In <cuYmh.201$9v1.239 at nntpserver.swip.net>, Michael M. wrote: > * The C is very fast, Python not. > * Target: Do optimization, that Python runs nearly like C. As someone else already asked: Why? You can't beat a compiled to machine code language with an interpreted one when doing integer arithmetic. > counter=c > while 0<=counter+4000: > f.append(2000) # f.append( int(a/5) ) > counter=counter-1 > # b=b+1 Why do you count so complicated here? It's hard to see that this creates a list with 2801 elements. > d = int(d/g) ## needs cast to int Instead of converting the numbers to float by "real" division and then converting back the result you should do integer division: d = d // g or d //= g > pi = pi + str("%04d" % int(e + d/a)) The `str()` call is unnecessary. And again: try to stick to integer arithmetic with ``//``. Here is my attempt to convert the C code, not written with speed in mind and I was too lazy too time it. :-) from itertools import izip def pi(): result = list() d = 0 e = 0 f = [2000] * 2801 for c in xrange(2800, 0, -14): for b, g in izip(xrange(c, 1, -1), xrange((c * 2) - 1, 0, -2)): d += f[b] * 10000 h, f[b] = divmod(d, g) d = h * b h, i = divmod(d, 10000) result.append('%.4d' % (e + h)) e = i return ''.join(result) Ciao, Marc 'BlackJack' Rintsch
- Previous message (by thread): MI5 Persecution: Counter-surveillance sweep by Nationwide Investigations Group
- Next message (by thread): code optimization (calc PI) / Full Code of PI calc in Python and C.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list