[New-bugs-announce] [issue28216] micro optimization for import_all_from

Xiang Zhang report at bugs.python.org
Tue Sep 20 13:06:40 EDT 2016


New submission from Xiang Zhang:

Since PyMapping_Keys always return a list or tuple and most __all__s are list (all in stdlib), I think we can avoid calling PySequence_GetItem for every key and use PySequence_Fast* APIs instead. This doesn't help much since other operations involved are expensive.

With patch:

[bin]$ ./python3 -m perf timeit -s 'import _ast; code=compile("from _ast import *", "<string>", "exec")' 'exec(code)'
....................
Median +- std dev: 11.3 us +- 0.3 us
[bin]$ ./python3 -m perf timeit -s 'import zipfile; code=compile("from zipfile import *", "<string>", "exec")' 'exec(code)'
....................
Median +- std dev: 2.98 us +- 0.04 us

Without patch:

[bin]$ ./python3 -m perf timeit -s 'import _ast; code=compile("from _ast import *", "<string>", "exec")' 'exec(code)'
....................
Median +- std dev: 12.5 us +- 0.3 us
./python3 -m perf timeit -s 'import zipfile; code=compile("from zipfile import *", "<string>", "exec")' 'exec(code)'
....................
Median +- std dev: 3.09 us +- 0.06 us

----------
components: Interpreter Core
files: import_all_from.patch
keywords: patch
messages: 277046
nosy: brett.cannon, haypo, serhiy.storchaka, xiang.zhang
priority: normal
severity: normal
stage: patch review
status: open
title: micro optimization for import_all_from
type: enhancement
versions: Python 3.7
Added file: http://bugs.python.org/file44758/import_all_from.patch

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue28216>
_______________________________________


More information about the New-bugs-announce mailing list