diff options
author | Guido van Rossum <guido@python.org> | 1997-08-12 14:53:39 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1997-08-12 14:53:39 (GMT) |
commit | 741689d5f3570a2e56bf166e6dfc6417749b0790 (patch) | |
tree | 22d52ae51943263acfc3b670a34d0027292a62dc /Python | |
parent | e5b40268817b517b2759ffb71d79e8979ad9bae2 (diff) | |
download | cpython-741689d5f3570a2e56bf166e6dfc6417749b0790.zip cpython-741689d5f3570a2e56bf166e6dfc6417749b0790.tar.gz cpython-741689d5f3570a2e56bf166e6dfc6417749b0790.tar.bz2 |
Use string interning and caching to get speedups on the mac (Jack).
Diffstat (limited to 'Python')
-rw-r--r-- | Python/import.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/Python/import.c b/Python/import.c index 446b499..f33e5d6 100644 --- a/Python/import.c +++ b/Python/import.c @@ -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; } |