Re: 2to3 used in the Shootout
On Dec 29 2008, 8:36 am, prueba...@latinmail.com wrote: > On Dec 23, 5:21 pm, Isaac Gouy wrote: > > > On Dec 23, 11:51 am, bearophileh...@lycos.com wrote: > > > > They have translated the Python benchmarks of theShootoutsite from > > > Py2 to Py3 using 2to3: > > > >http://shootout.alioth.debian.org/u32/benchmark.php?test=all〈=pyt... > > > So please re-write those programs to remove problems created by > > automatic translation and better take advantage of Python 3 > > functionality... > > >http://shootout.alioth.debian.org/u32/faq.php#play > > > > It shows some "performance bugs" of Python3 itself (especially > > > regarding the binary-trees benchmark, that was unexpected by me), and > > > two points where 2to3 may be improved, for example after the > > > translation this gives error: > > > table=string.maketrans('ACBDGHK\nMNSRUTWVYacbdghkmnsrutwvy', > > > 'TGVHCDM > > > \nKNSYAAWBRTGVHCDMKNSYAAWBR')): > > > > Gives: > > > TypeError: maketrans arguments must be bytes objects > > > > Bye, > > > bearophile > > BTW I am not sure how to submit this or if this is actually valid to > do, but I have a faster version for the pidigits program that uses > basically the same algorithm but removes function calls and unused > terms of the formula. > > > import time > > def pi_digits(n, width): > out = [] > wrt = out.append > aq = 1 > ar = 0 > at = 1 > k = 0 > f = 1 > g = 2 > i = 0 > while i < n: > y = (aq*3+ar)//at > while y != ((aq*4+ar)//at): > k += 1 > f += 2 > g += 4 > ar = aq*g+ar*f > aq = aq*k > at = at*f > y = (aq*3+ar)//at > aq = 10*aq > ar = 10*ar-10*y*at > i += 1 > wrt(str(y)) > if not i%width: > wrt('\t:%d\n'%i) > wrt(' '*(width-i%width)) > wrt('\t:%d\n'%i) > return ''.join(out) > > def main(): > begin = time.time() > n = 1000 > width = 70 > print pi_digits(n,width) > print 'Total Time:', time.time()-begin > > main() > > http://shootout.alioth.debian.org/u32q/faq.php#play -- http://mail.python.org/mailman/listinfo/python-list
Re: 2to3 used in the Shootout
On Dec 23, 5:21 pm, Isaac Gouy wrote: > On Dec 23, 11:51 am, bearophileh...@lycos.com wrote: > > > They have translated the Python benchmarks of the Shootout site from > > Py2 to Py3 using 2to3: > > >http://shootout.alioth.debian.org/u32/benchmark.php?test=all〈=pyt... > > So please re-write those programs to remove problems created by > automatic translation and better take advantage of Python 3 > functionality... > > http://shootout.alioth.debian.org/u32/faq.php#play > > > It shows some "performance bugs" of Python3 itself (especially > > regarding the binary-trees benchmark, that was unexpected by me), and > > two points where 2to3 may be improved, for example after the > > translation this gives error: > > table=string.maketrans('ACBDGHK\nMNSRUTWVYacbdghkmnsrutwvy', > > 'TGVHCDM > > \nKNSYAAWBRTGVHCDMKNSYAAWBR')): > > > Gives: > > TypeError: maketrans arguments must be bytes objects > > > Bye, > > bearophile > > BTW I am not sure how to submit this or if this is actually valid to do, but I have a faster version for the pidigits program that uses basically the same algorithm but removes function calls and unused terms of the formula. import time def pi_digits(n, width): out = [] wrt = out.append aq = 1 ar = 0 at = 1 k = 0 f = 1 g = 2 i = 0 while i < n: y = (aq*3+ar)//at while y != ((aq*4+ar)//at): k += 1 f += 2 g += 4 ar = aq*g+ar*f aq = aq*k at = at*f y = (aq*3+ar)//at aq = 10*aq ar = 10*ar-10*y*at i += 1 wrt(str(y)) if not i%width: wrt('\t:%d\n'%i) wrt(' '*(width-i%width)) wrt('\t:%d\n'%i) return ''.join(out) def main(): begin = time.time() n = 1000 width = 70 print pi_digits(n,width) print 'Total Time:', time.time()-begin main() -- http://mail.python.org/mailman/listinfo/python-list
Re: 2to3 used in the Shootout
On Dec 23, 11:51 am, bearophileh...@lycos.com wrote: > They have translated the Python benchmarks of the Shootout site from > Py2 to Py3 using 2to3: > > http://shootout.alioth.debian.org/u32/benchmark.php?test=all〈=pyt... So please re-write those programs to remove problems created by automatic translation and better take advantage of Python 3 functionality... http://shootout.alioth.debian.org/u32/faq.php#play > It shows some "performance bugs" of Python3 itself (especially > regarding the binary-trees benchmark, that was unexpected by me), and > two points where 2to3 may be improved, for example after the > translation this gives error: > table=string.maketrans('ACBDGHK\nMNSRUTWVYacbdghkmnsrutwvy', > 'TGVHCDM > \nKNSYAAWBRTGVHCDMKNSYAAWBR')): > > Gives: > TypeError: maketrans arguments must be bytes objects > > Bye, > bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: 2to3 used in the Shootout
bearophileh...@lycos.com wrote: They have translated the Python benchmarks of the Shootout site from Py2 to Py3 using 2to3: http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=python3 It shows some "performance bugs" of Python3 itself (especially regarding the binary-trees benchmark, that was unexpected by me), and two points where 2to3 may be improved, for example after the translation this gives error: table=string.maketrans('ACBDGHK\nMNSRUTWVYacbdghkmnsrutwvy', 'TGVHCDM \nKNSYAAWBRTGVHCDMKNSYAAWBR')): Gives: TypeError: maketrans arguments must be bytes objects Perhaps you could file a tracker item. -- http://mail.python.org/mailman/listinfo/python-list
2to3 used in the Shootout
They have translated the Python benchmarks of the Shootout site from Py2 to Py3 using 2to3: http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=python3 It shows some "performance bugs" of Python3 itself (especially regarding the binary-trees benchmark, that was unexpected by me), and two points where 2to3 may be improved, for example after the translation this gives error: table=string.maketrans('ACBDGHK\nMNSRUTWVYacbdghkmnsrutwvy', 'TGVHCDM \nKNSYAAWBRTGVHCDMKNSYAAWBR')): Gives: TypeError: maketrans arguments must be bytes objects Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list