]> granicus.if.org Git - python/commitdiff
Use string interning and caching to get speedups on the mac (Jack).
authorGuido van Rossum <guido@python.org>
Tue, 12 Aug 1997 14:53:39 +0000 (14:53 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 12 Aug 1997 14:53:39 +0000 (14:53 +0000)
Python/import.c

index 446b4991ce7ba92ceaf8f7182d4af9db9a5cbb70..f33e5d6749a7fa2acd96bcce49ef8cbad8caf5b5 100644 (file)
@@ -570,7 +570,17 @@ find_module(name, path, buf, buflen, p_fp)
                if ((int)strlen(buf) != len)
                        continue; /* v contains '\0' */
 #ifdef macintosh
-               if ( PyMac_FindResourceModule(name, buf) ) {
+#ifdef INTERN_STRINGS
+               /* 
+               ** Speedup: each sys.path item is interned, and
+               ** FindResourceModule remembers which items refer to
+               ** folders (so we don't have to bother trying to look
+               ** into them for resources). 
+               */
+               PyString_InternInPlace(&PyList_GET_ITEM(path, i));
+               v = PyList_GET_ITEM(path, i);
+#endif
+               if ( PyMac_FindResourceModule((PyStringObject *)v, name, buf) ) {
                        static struct filedescr resfiledescr =
                                {"", "", PY_RESOURCE};
                        
@@ -579,6 +589,11 @@ find_module(name, path, buf, buflen, p_fp)
 #endif
                if (len > 0 && buf[len-1] != SEP)
                        buf[len++] = SEP;
+#ifdef macintosh
+               fdp = PyMac_FindModuleExtension(buf, &len, name);
+               if ( fdp )
+                       fp = fopen(buf, fdp->mode);
+#else
 #ifdef IMPORT_8x3_NAMES
                /* see if we are searching in directory dos_8x3 */
                if (len > 7 && !strncmp(buf + len - 8, "dos_8x3", 7)){
@@ -604,6 +619,7 @@ find_module(name, path, buf, buflen, p_fp)
                        if (fp != NULL)
                                break;
                }
+#endif /* !macintosh */
                if (fp != NULL)
                        break;
        }