[Python-checkins] r45590 - python/trunk/Modules/gcmodule.c

Jim Jewett jimjjewett at gmail.com
Fri Apr 21 15:56:09 CEST 2006


Is there some reason the import is not also inside the

         if (debug & DEBUG_STATS) {

guard clause?  For example:


        if (debug & DEBUG_STATS) {
+               if (tmod == NULL) {
+                       tmod = PyImport_ImportModule("time");
+                       if (tmod == NULL)
+                               PyErr_Clear();
+                       }
+               if (tmod != NULL) {
+                       PyObject *f = PyObject_CallMethod(tmod, "time", NULL);
+                       if (f == NULL) {
+                               PyErr_Clear();
+                       }
+                       else {
+                               t1 = PyFloat_AsDouble(f);
+                               Py_DECREF(f);
+                       }
+               }
                PySys_WriteStderr("gc: collecting generation %d...\n",
                                  generation);



On 4/20/06, skip.montanaro <python-checkins at python.org> wrote:
> Author: skip.montanaro
> Date: Fri Apr 21 03:33:40 2006
> New Revision: 45590
>
> Modified:
>    python/trunk/Modules/gcmodule.c
> Log:
> This is a long-ago patch I submitted to SF (1100924) to time the gc passes.
> Barry approved it awhile ago.  Been sitting in my sandbox for awhile as
> well.
>
>
> Modified: python/trunk/Modules/gcmodule.c
> ==============================================================================
> --- python/trunk/Modules/gcmodule.c     (original)
> +++ python/trunk/Modules/gcmodule.c     Fri Apr 21 03:33:40 2006
> @@ -734,6 +734,8 @@
>         PyGC_Head unreachable; /* non-problematic unreachable trash */
>         PyGC_Head finalizers;  /* objects with, & reachable from, __del__ */
>         PyGC_Head *gc;
> +       static PyObject *tmod = NULL;
> +       double t1 = 0.0;
>
>         if (delstr == NULL) {
>                 delstr = PyString_InternFromString("__del__");
> @@ -741,7 +743,23 @@
>                         Py_FatalError("gc couldn't allocate \"__del__\"");
>         }
>
> +       if (tmod == NULL) {
> +               tmod = PyImport_ImportModule("time");
> +               if (tmod == NULL)
> +                       PyErr_Clear();
> +       }
> +
>         if (debug & DEBUG_STATS) {
> +               if (tmod != NULL) {
> +                       PyObject *f = PyObject_CallMethod(tmod, "time", NULL);
> +                       if (f == NULL) {
> +                               PyErr_Clear();
> +                       }
> +                       else {
> +                               t1 = PyFloat_AsDouble(f);
> +                               Py_DECREF(f);
> +                       }
> +               }
>                 PySys_WriteStderr("gc: collecting generation %d...\n",
>                                   generation);
>                 PySys_WriteStderr("gc: objects in each generation:");
> @@ -814,6 +832,17 @@
>                 if (debug & DEBUG_COLLECTABLE) {
>                         debug_cycle("collectable", FROM_GC(gc));
>                 }
> +               if (tmod != NULL && (debug & DEBUG_STATS)) {
> +                       PyObject *f = PyObject_CallMethod(tmod, "time", NULL);
> +                       if (f == NULL) {
> +                               PyErr_Clear();
> +                       }
> +                       else {
> +                               t1 = PyFloat_AsDouble(f)-t1;
> +                               Py_DECREF(f);
> +                               PySys_WriteStderr("gc: %.4fs elapsed.\n", t1);
> +                       }
> +               }
>         }
>
>         /* Clear weakrefs and invoke callbacks as necessary. */
> _______________________________________________
> Python-checkins mailing list
> Python-checkins at python.org
> http://mail.python.org/mailman/listinfo/python-checkins
>


More information about the Python-checkins mailing list