diff --git a/Python/import.c b/Python/import.c
index 7ba1842..950c872 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1667,45 +1667,52 @@
         }
     }
     else {
-        static int ximporttime = 0;
+        /* 1 -- true, 0 -- false, -1 -- not initialized */
+        static int ximporttime = -1;
         static int import_level;
         static _PyTime_t accumulated;
         _Py_IDENTIFIER(importtime);
 
         _PyTime_t t1 = 0, accumulated_copy = accumulated;
 
-        Py_XDECREF(mod);
-
         /* XOptions is initialized after first some imports.
-         * So we can't have negative cache.
-         * Anyway, importlib.__find_and_load is much slower than
-         * _PyDict_GetItemId()
+         * So we can't have negative cache before completed initialization.
+         * Anyway, importlib._find_and_load is much slower than
+         * _PyDict_GetItemIdWithError().
          */
-        if (ximporttime == 0) {
-            char *envoption = Py_GETENV("PYTHONPROFILEIMPORTTIME");
-            if (envoption != NULL && strlen(envoption) > 0) {
+        if (ximporttime < 0) {
+            const char *envoption = Py_GETENV("PYTHONPROFILEIMPORTTIME");
+            if (envoption != NULL && *envoption != '\0') {
                 ximporttime = 1;
             }
             else {
                 PyObject *xoptions = PySys_GetXOptions();
+                PyObject *value = NULL;
                 if (xoptions) {
-                    PyObject *value = _PyDict_GetItemId(
+                    value = _PyDict_GetItemIdWithError(
                         xoptions, &PyId_importtime);
+                }
+                if (value == NULL && PyErr_Occurred()) {
+                    goto error;
+                }
+                if (value != NULL || Py_IsInitialized()) {
                     ximporttime = (value == Py_True);
                 }
             }
-            if (ximporttime) {
+            if (ximporttime > 0) {
                 fputs("import time: self [us] | cumulative | imported package\n",
                       stderr);
             }
         }
 
-        if (ximporttime) {
+        if (ximporttime > 0) {
             import_level++;
             t1 = _PyTime_GetPerfCounter();
             accumulated = 0;
         }
 
+        Py_XDECREF(mod);
+
         if (PyDTrace_IMPORT_FIND_LOAD_START_ENABLED())
             PyDTrace_IMPORT_FIND_LOAD_START(PyUnicode_AsUTF8(abs_name));
 
@@ -1717,7 +1724,7 @@
             PyDTrace_IMPORT_FIND_LOAD_DONE(PyUnicode_AsUTF8(abs_name),
                                            mod != NULL);
 
-        if (ximporttime) {
+        if (ximporttime > 0) {
             _PyTime_t cum = _PyTime_GetPerfCounter() - t1;
 
             import_level--;
