Message394773
the `.select(...)` api is at least twice as slow as indexing as well:
setup:
```
virtualenv venv39 -p python3.9
venv39/bin/pip install flake8 pytest pytest-randomly
virtualenv venv39 -p python3.10
venv310/bin/pip install flake8 pytest pytest-randomly
```
```python
import importlib.metadata
import sys
import time
def f():
eps = importlib.metadata.entry_points()
if sys.version_info >= (3, 10):
eps.select(name='console_scripts')
else:
eps['console_scripts']
t0 = time.time()
for _ in range(100):
f()
t1 = time.time()
print(f'{t1-t0}')
```
```
$ ./venv39/bin/python t.py
0.687570333480835
$ ./venv310/bin/python t.py
1.3486714363098145
```
it is *way* worse when involving multiple entry points:
```python
import importlib.metadata
import sys
import time
# moved outside of the loop, already showed this component is slower
eps = importlib.metadata.entry_points()
def f():
# common for plugin systems to look up multiple entry points
for ep in ('console_scripts', 'flake8.extension', 'pytest11'):
if sys.version_info >= (3, 10):
eps.select(name=ep)
else:
eps[ep]
t0 = time.time()
for _ in range(10000):
f()
t1 = time.time()
print(f'{t1-t0}')
```
```console
$ ./venv39/bin/python t.py
0.01629471778869629
$ ./venv310/bin/python t.py
8.569908380508423
``` |
|
Date |
User |
Action |
Args |
2021-05-30 17:04:11 | Anthony Sottile | set | recipients:
+ Anthony Sottile, jaraco, Zac Hatfield-Dodds, miss-islington, domdfcoding |
2021-05-30 17:04:11 | Anthony Sottile | set | messageid: <1622394251.59.0.279803920114.issue44246@roundup.psfhosted.org> |
2021-05-30 17:04:11 | Anthony Sottile | link | issue44246 messages |
2021-05-30 17:04:11 | Anthony Sottile | create | |
|