mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
Improve object stats (#92845)
* Add incref/decref stats * Show ratios for allocation in summary
This commit is contained in:
parent
f6fd8aac13
commit
fa2b8b75eb
10 changed files with 106 additions and 55 deletions
|
@ -55,6 +55,7 @@
|
|||
#undef Py_DECREF
|
||||
#define Py_DECREF(arg) \
|
||||
do { \
|
||||
_Py_DECREF_STAT_INC(); \
|
||||
PyObject *op = _PyObject_CAST(arg); \
|
||||
if (--op->ob_refcnt == 0) { \
|
||||
destructor dealloc = Py_TYPE(op)->tp_dealloc; \
|
||||
|
@ -78,6 +79,7 @@
|
|||
#undef _Py_DECREF_SPECIALIZED
|
||||
#define _Py_DECREF_SPECIALIZED(arg, dealloc) \
|
||||
do { \
|
||||
_Py_DECREF_STAT_INC(); \
|
||||
PyObject *op = _PyObject_CAST(arg); \
|
||||
if (--op->ob_refcnt == 0) { \
|
||||
destructor d = (destructor)(dealloc); \
|
||||
|
|
|
@ -191,6 +191,8 @@ print_object_stats(FILE *out, ObjectStats *stats)
|
|||
fprintf(out, "Object allocations over 4 kbytes: %" PRIu64 "\n", stats->allocations_big);
|
||||
fprintf(out, "Object frees: %" PRIu64 "\n", stats->frees);
|
||||
fprintf(out, "Object new values: %" PRIu64 "\n", stats->new_values);
|
||||
fprintf(out, "Object increfs: %" PRIu64 "\n", stats->increfs);
|
||||
fprintf(out, "Object decrefs: %" PRIu64 "\n", stats->decrefs);
|
||||
fprintf(out, "Object materialize dict (on request): %" PRIu64 "\n", stats->dict_materialized_on_request);
|
||||
fprintf(out, "Object materialize dict (new key): %" PRIu64 "\n", stats->dict_materialized_new_key);
|
||||
fprintf(out, "Object materialize dict (too big): %" PRIu64 "\n", stats->dict_materialized_too_big);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue