New submission from William Ehlhardt:
The following Python runs unnecessarily slowly:
import fractions
fractions.Fraction(6249919, 625) ** 89993
The problem here is that Fraction.__pow__ constructs a new Fraction() to
return, and Fraction.__new__ tries to gcd to normalize the
numerator/denominator. The gcd is very, very slow, and more to the point,
unnecessary; raising a normalized fraction to an integer power will always
yield another normalized fraction.
fractions.Fraction.__pow__ should use this trick to make the code snippet above
fast.
--
components: Library (Lib)
messages: 215409
nosy: Orborde
priority: normal
severity: normal
status: open
title: fractions.Fraction.__pow__ does unneeded renormalization
type: performance
versions: Python 2.7, Python 3.2
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21136
___
___
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com