New submission from Dennis Sweeney <sweeney.dennis...@gmail.com>:
## Below are my benchmarks for this change. from operator import itemgetter, attrgetter from pyperf import Runner class MyClass: __slots__ = "a", "b" namespace = {'itemgetter': itemgetter, 'attrgetter': attrgetter, 'MyClass': MyClass, } runner = Runner() runner.timeit( name="itemgetter", setup="f = itemgetter(1); x = (1, 2, 3)", stmt="f(x)", globals=namespace ) runner.timeit( name="attrgetter", setup="f = attrgetter('b'); x = MyClass(); x.a = x.b = 1", stmt="f(x)", globals=namespace ) ##### Results ##### # itemgetter: Mean +- std dev: [operator_main] 45.3 ns +- 1.3 ns -> [operator_vec] 29.5 ns +- 0.7 ns: 1.54x faster # attrgetter: Mean +- std dev: [operator_main] 61.6 ns +- 1.7 ns -> [operator_vec] 43.8 ns +- 0.9 ns: 1.41x faster ---------- components: Library (Lib) messages: 399900 nosy: Dennis Sweeney priority: normal severity: normal status: open title: Add vectorcall on operator.itemgetter and attrgetter objects type: performance versions: Python 3.11 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue44953> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com