summaryrefslogtreecommitdiffstats
path: root/Misc
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2006-05-24 21:10:40 (GMT)
committerTim Peters <tim.peters@gmail.com>2006-05-24 21:10:40 (GMT)
commit696cf43b58cf1ddb7a3ab3c5bee6709e3b3653d9 (patch)
treef68974a6bc0ac69756a54187e1dbf4585f8c9f1a /Misc
parentf4049089c595864138fe2452694ac8a75ab32d69 (diff)
downloadcpython-696cf43b58cf1ddb7a3ab3c5bee6709e3b3653d9.zip
cpython-696cf43b58cf1ddb7a3ab3c5bee6709e3b3653d9.tar.gz
cpython-696cf43b58cf1ddb7a3ab3c5bee6709e3b3653d9.tar.bz2
Heavily fiddled variant of patch #1442927: PyLong_FromString optimization.
``long(str, base)`` is now up to 6x faster for non-power-of-2 bases. The largest speedup is for inputs with about 1000 decimal digits. Conversion from non-power-of-2 bases remains quadratic-time in the number of input digits (it was and remains linear-time for bases 2, 4, 8, 16 and 32). Speedups at various lengths for decimal inputs, comparing 2.4.3 with current trunk. Note that it's actually a bit slower for 1-digit strings: len speedup ---- ------- 1 -4.5% 2 4.6% 3 8.3% 4 12.7% 5 16.9% 6 28.6% 7 35.5% 8 44.3% 9 46.6% 10 55.3% 11 65.7% 12 77.7% 13 73.4% 14 75.3% 15 85.2% 16 103.0% 17 95.1% 18 112.8% 19 117.9% 20 128.3% 30 174.5% 40 209.3% 50 236.3% 60 254.3% 70 262.9% 80 295.8% 90 297.3% 100 324.5% 200 374.6% 300 403.1% 400 391.1% 500 388.7% 600 440.6% 700 468.7% 800 498.0% 900 507.2% 1000 501.2% 2000 450.2% 3000 463.2% 4000 452.5% 5000 440.6% 6000 439.6% 7000 424.8% 8000 418.1% 9000 417.7%
Diffstat (limited to 'Misc')
-rw-r--r--Misc/NEWS6
1 files changed, 6 insertions, 0 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index d0d00e9..625dd74 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,12 @@ What's New in Python 2.5 alpha 3?
Core and builtins
-----------------
+- Patch #1442927: ``long(str, base)`` is now up to 6x faster for non-power-
+ of-2 bases. The largest speedup is for inputs with about 1000 decimal
+ digits. Conversion from non-power-of-2 bases remains quadratic-time in
+ the number of input digits (it was and remains linear-time for bases
+ 2, 4, 8, 16 and 32).
+
- Bug #1334662: ``int(string, base)`` could deliver a wrong answer
when ``base`` was not 2, 4, 8, 10, 16 or 32, and ``string`` represented
an integer close to ``sys.maxint``. This was repaired by patch