[PERF] Construction of known `cdef classes` can go through `__new__`
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Cython
- Sterne
- 3.4k
- Forks
- 329
- Ø Merge
- 1 T. 23 Std.
- Gemergte PRs (30 T.)
- 116
Beschreibung
In driver, runtime and nvrtc, when an instance of a cdef class is contructed (usually as a return value), it just uses the obvious Python-level constructor, for example:
cdef CUtensorMap tensorMap = CUtensorMap()
This makes a slow Python-like call (the ironically named PyObject_FastCall).
Instead, following Cythons fast instantiation advice, we can use __new__, which will make a faster C-level call to __cinit__.
cdef CUtensorMap tensorMap = CUtensorMap.__new__(CUtensorMap)
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Durchsuche den driver-, runtime- und nvrtc-Code nach Instanziierungen bekannter cdef-Klassen, die den Python-seitigen Konstruktor verwenden. Vergleiche diese Stellen mit Cythons Anleitung zur schnellen Instanziierung und aktualisiere die zutreffenden Konstruktionspfade so, dass sie new verwenden; abgeschlossen ist die Aufgabe, wenn die relevanten Instanziierungen durchgängig den schnelleren C-Level-Pfad verwenden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Bereich
- performance
- Issue-Typ
- Refactoring
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100