Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
56d13fc
Prebuild mro_dict for find_name_in_mro
sergey-miryanov Apr 6, 2025
1eed75d
Preget tp_dict
sergey-miryanov Apr 6, 2025
bba66d6
Slotdefs cache
sergey-miryanov Apr 7, 2025
bac95a5
Move slotdefs_cache to interp
sergey-miryanov Apr 8, 2025
8d1f5be
Use bytes for slotdefs_cache
sergey-miryanov Apr 8, 2025
8cf19e8
Use type_slots_ptrs cache
sergey-miryanov Apr 8, 2025
b0ad875
Move slotdefs_cache init to pycore_init_builtins
sergey-miryanov Apr 8, 2025
79a165d
Create slotdefs_cache only for main interpreter
sergey-miryanov Apr 9, 2025
a853294
Do not iterate slotdefs_cache just check dups count
sergey-miryanov Apr 9, 2025
75c17fb
Add name_count to pytype_slotdef and get rid of slotdefs_cache and re…
sergey-miryanov Apr 9, 2025
fc17a68
Rename _PyType_InitSlotDefsCache to _PyType_InitSlotDefsNameCounts
sergey-miryanov Apr 9, 2025
736bca4
Get rid of type_slots_ptrs and type_slots_pname from _Py_interp_cache…
sergey-miryanov Apr 9, 2025
1341ed9
Add news entry
sergey-miryanov Apr 9, 2025
3efb9ca
Rename _PyType_InitSlotDefsNameCounts
sergey-miryanov Apr 16, 2025
a792e9d
Use
sergey-miryanov Apr 16, 2025
b6fafa9
Revert "Preget tp_dict"
sergey-miryanov Apr 16, 2025
1459c16
Revert "Prebuild mro_dict for find_name_in_mro"
sergey-miryanov Apr 16, 2025
08740af
Update _PyType_InitSlotDefs and add comment for wrapperbase.name_count
sergey-miryanov Apr 16, 2025
0370d59
Fix error message if _PyType_InitSlotDefs fails
sergey-miryanov Apr 16, 2025
7a57f7c
Merge branch 'main' into gh-132042-optimize-class-creation
sergey-miryanov Apr 18, 2025
c2372f1
Merge branch 'main' into gh-132042-optimize-class-creation
sergey-miryanov Apr 20, 2025
9f48eb3
Merge branch 'main' into gh-132042-optimize-class-creation
sergey-miryanov Apr 22, 2025
17d0265
Use slotdefs_name_counts to check name duplicates
sergey-miryanov Apr 22, 2025
6d5589c
Add slotdefs_name_counts to ignored.tsv to make c-analyzer happy
sergey-miryanov Apr 22, 2025
a7af5bd
Adjust c-analyzer max_sizes
sergey-miryanov Apr 25, 2025
7f62d59
Extend error messages if too much code to c-analyzer
sergey-miryanov Apr 30, 2025
b09deaf
Revert "Extend error messages if too much code to c-analyzer"
sergey-miryanov Apr 30, 2025
04539cc
Merge branch 'main' into gh-132042-optimize-class-creation
sergey-miryanov Apr 30, 2025
af8ce30
Apply suggestions from code review
sergey-miryanov May 1, 2025
9db0885
Merge branch 'main' into gh-132042-optimize-class-creation
sergey-miryanov May 2, 2025
dbf869f
Merge branch 'main' into gh-132042-optimize-class-creation
sergey-miryanov May 2, 2025
9434773
Merge branch 'gh-132042-optimize-class-creation' of github.com:sergey…
sergey-miryanov May 3, 2025
0a4c369
Merge branch 'main' into gh-132042-optimize-class-creation
sergey-miryanov May 3, 2025
05df484
Merge branch 'main' into gh-132042-optimize-class-creation
sergey-miryanov May 8, 2025
7a61ed3
Merge branch 'main' into gh-132042-optimize-class-creation
sergey-miryanov Jun 24, 2025
211d043
Apply suggestions from code review
sergey-miryanov Oct 1, 2025
a4c4d8e
Merge branch 'gh-132042-optimize-class-creation' of github.com:sergey…
sergey-miryanov Oct 1, 2025
82466cc
Fix stray change
sergey-miryanov Oct 1, 2025
f0b40c7
Merge branch 'main' into gh-132042-optimize-class-creation
sergey-miryanov Oct 1, 2025
25acb4a
Fix news entry
sergey-miryanov Oct 1, 2025
5db0944
Apply suggestions from code review
sergey-miryanov Oct 2, 2025
b185436
Fix build
sergey-miryanov Oct 2, 2025
c1884f5
Update Objects/typeobject.c
sergey-miryanov Oct 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Include/cpython/descrobject.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ struct wrapperbase {
const char *doc;
int flags;
PyObject *name_strobj;
uint8_t name_count;
};

/* Flags for above struct */
Expand Down
2 changes: 0 additions & 2 deletions Include/internal/pycore_interp_structs.h
Original file line number Diff line number Diff line change
Expand Up @@ -666,8 +666,6 @@ struct _Py_interp_cached_objects {

/* object.__reduce__ */
PyObject *objreduce;
PyObject *type_slots_pname;
pytype_slotdef *type_slots_ptrs[MAX_EQUIV];

/* TypeVar and related types */
PyTypeObject *generic_type;
Expand Down
3 changes: 3 additions & 0 deletions Include/internal/pycore_typeobject.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,9 @@ typedef int (*_py_validate_type)(PyTypeObject *);
extern int _PyType_Validate(PyTypeObject *ty, _py_validate_type validate, unsigned int *tp_version);
extern int _PyType_CacheGetItemForSpecialization(PyHeapTypeObject *ht, PyObject *descriptor, uint32_t tp_version);

// Precalculates count of non-unique slots
extern int _PyType_InitSlotDefsNameCounts(PyInterpreterState *interp);

#ifdef __cplusplus
}
#endif
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Improve class creation times by up to 40%. Patch by Sergey Miryanov.
Loading
Loading