-
-
Notifications
You must be signed in to change notification settings - Fork 32.6k
Open
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)performancePerformance or resource usagePerformance or resource usagetype-refactorCode refactoring (with no changes in behavior)Code refactoring (with no changes in behavior)
Description
While doing something else, I ended up reading parts of setobject.c
and I noticed that set_intersection
doesn't use _PyObject_HashFast()
:
Line 1453 in 2a6888e
hash = PyObject_Hash(key); |
Is there a reason for it? I tried replacing it (no unit test fails), and benchmarking both versions (with --pgo
enabled) but I couldn't see a difference (probably too much noise, or maybe I didn't try hard enough, probably should try on really big big sets to call that operation many a times). In theory though, it should make set
s faster when they have strings (and maybe sets of other types slightly slightly slower but _PyObject_HashFast()
is used everywhere else in setobject.c
so I think that that tradeoff was considered already).
Linked PRs
Metadata
Metadata
Assignees
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)performancePerformance or resource usagePerformance or resource usagetype-refactorCode refactoring (with no changes in behavior)Code refactoring (with no changes in behavior)