[issue47067] Add vectorcall for generica alias object
penguin_wwy
report at bugs.python.org
Sun Mar 20 11:04:25 EDT 2022
penguin_wwy <940375606 at qq.com> added the comment:
The point of bpo-40369 issue seems to be to provide vectorcall to the `GenericAliasType`, means vectorcall for `Queue[int]`
However, my idea is to add vectorcall to gaobject, like this:
```
d = dict[int]
d(a=1, b=2) <-- vectorcall
```
The idea came from my desire to implement different subclasses of a type when implementing some kind of factory model:
```
class ChildClassBuilder:
...
def set_type(self, t: Type):
self.t = t
def build():
instance = self.t()
...
return instance
```
In the case of high type-hint coverage, the `self.t` is often a gaobject.
Benchmark example:
```
def test():
d = dict[int]
for _ in range(1000000):
d(a=1, b=2)
```
Speedup 20% in my wsl2
```
opt:
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 1.728 1.728 <string>:1(<module>)
1 1.728 1.728 1.728 1.728 test.py:4(test)
master:
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 2.271 2.271 <string>:1(<module>)
1 2.271 2.271 2.271 2.271 test.py:4(test)
```
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue47067>
_______________________________________
More information about the Python-bugs-list
mailing list