summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2021-10-01 13:29:00 +0200
committerGitHub <noreply@github.com>2021-10-01 13:29:00 +0200
commit54957f16a63ecb6b15f77b01fa7c55ada892604a (patch)
tree880e2951cfc3bdabb4566171553751a467df8c4e
parent98d282700221234157159df4af76423d89490ad9 (diff)
downloadcpython-git-54957f16a63ecb6b15f77b01fa7c55ada892604a.tar.gz
bpo-41710: gc_collect_main() uses _PyTime_GetPerfCounter() (GH-28676)
If the DEBUG_STATS debug flag is set, gc_collect_main() now uses _PyTime_GetPerfCounter() instead of _PyTime_GetMonotonicClock() to measure the elapsed time. On Windows, _PyTime_GetMonotonicClock() only has a resolution of 15.6 ms, whereas _PyTime_GetPerfCounter() is closer to a resolution of 100 ns.
-rw-r--r--Modules/gcmodule.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c
index 2592c397cf..7d1a45bcae 100644
--- a/Modules/gcmodule.c
+++ b/Modules/gcmodule.c
@@ -1211,7 +1211,7 @@ gc_collect_main(PyThreadState *tstate, int generation,
if (gcstate->debug & DEBUG_STATS) {
PySys_WriteStderr("gc: collecting generation %d...\n", generation);
show_stats_each_generations(gcstate);
- t1 = _PyTime_GetMonotonicClock();
+ t1 = _PyTime_GetPerfCounter();
}
if (PyDTrace_GC_START_ENABLED())
@@ -1307,7 +1307,7 @@ gc_collect_main(PyThreadState *tstate, int generation,
debug_cycle("uncollectable", FROM_GC(gc));
}
if (gcstate->debug & DEBUG_STATS) {
- double d = _PyTime_AsSecondsDouble(_PyTime_GetMonotonicClock() - t1);
+ double d = _PyTime_AsSecondsDouble(_PyTime_GetPerfCounter() - t1);
PySys_WriteStderr(
"gc: done, %zd unreachable, %zd uncollectable, %.4fs elapsed\n",
n+m, n, d);