New submission from Sergey Fedoseev <fedoseev.ser...@gmail.com>:

Currently _Py_bytes_capitalize() checks case before using conversion table, 
performance can be improved by using conversion table unconditionally. 
Benchmarks:

$ python -m perf timeit --compare-to ~/tmp/cpython-master-venv/bin/python -s "b 
= b'0'*10000000" "b.capitalize()"
/home/sergey/tmp/cpython-master-venv/bin/python: ..................... 7.26 ms 
+- 0.03 ms
/home/sergey/tmp/cpython-dev-venv/bin/python: ..................... 7.27 ms +- 
0.04 ms
Mean +- std dev: [/home/sergey/tmp/cpython-master-venv/bin/python] 7.26 ms +- 
0.03 ms -> [/home/sergey/tmp/cpython-dev-venv/bin/python] 7.27 ms +- 0.04 ms: 
1.00x slower (+0%)
Not significant!

$ python -m perf timeit --compare-to ~/tmp/cpython-master-venv/bin/python -s "b 
= b'a'*10000000" "b.capitalize()"
/home/sergey/tmp/cpython-master-venv/bin/python: ..................... 7.25 ms 
+- 0.03 ms
/home/sergey/tmp/cpython-dev-venv/bin/python: ..................... 7.26 ms +- 
0.03 ms
Mean +- std dev: [/home/sergey/tmp/cpython-master-venv/bin/python] 7.25 ms +- 
0.03 ms -> [/home/sergey/tmp/cpython-dev-venv/bin/python] 7.26 ms +- 0.03 ms: 
1.00x slower (+0%)

$ python -m perf timeit --compare-to ~/tmp/cpython-master-venv/bin/python -s "b 
= b'A'*10000000" "b.capitalize()"
/home/sergey/tmp/cpython-master-venv/bin/python: ..................... 18.1 ms 
+- 0.0 ms
/home/sergey/tmp/cpython-dev-venv/bin/python: ..................... 7.31 ms +- 
0.13 ms
Mean +- std dev: [/home/sergey/tmp/cpython-master-venv/bin/python] 18.1 ms +- 
0.0 ms -> [/home/sergey/tmp/cpython-dev-venv/bin/python] 7.31 ms +- 0.13 ms: 
2.47x faster (-60%)

----------
components: Interpreter Core
messages: 324707
nosy: sir-sigurd
priority: normal
severity: normal
status: open
title: improve performance of _Py_bytes_capitalize()
type: performance
versions: Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue34599>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to