`_PyStaticCode_InternStrings` is called ~800 times during startup.
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 45/100
- Issue-Typ
- Refactoring
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Bereich
- backend, performance
Rechercherichtung
Beginne damit, _Py_Deepfreeze_Init() und seine Aufrufe von _PyStaticCode_InternStrings nachzuverfolgen. Überprüfe, wie das Dictionary der internierten Strings und die Hash-Codes der Strings initialisiert werden, und ermittle anschließend, ob die vorgeschlagene Massenerstellung den erforderlichen Dictionary-Zustand und das Startverhalten beibehält.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
The _Py_Deepfreeze_Init() function calls _PyStaticCode_InternStrings once for each string.
Creating the interned string dict in one go, from the table of static strings would be much faster.
something like this (error checking omitted, and other liberties taken for brevity)
_Py_CreateInternedDict(PyObject **strs, int n) {
PyDictKeys *table = make_dict_keys(n);
for (int i = 0; i < n; i++) {
table->entries[i].key = table->entries[i].value = strs[i];
table->entries[i].hashcode = strs[i].hash_code;
// Fix up size and entries here.
}
return new_dict(table);
}
All the hash codes will need to be initialized first, but we probably should do that anyway.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 36k
- Ø Merge
- 1 T. 9 Std.
- Gemergte PRs (30 T.)
- 558
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus python/cpython
-
docs pending
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
stdlib type-feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
stdlib type-feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
build type-bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
stdlib topic-email type-feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
bancolombia/sentinel#23 ·
-
test md OffenCI
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100