#11729: Cache module import locations
---------------------------+------------------------------------------------
   Reporter:  vbraun       |          Owner:  jason       
       Type:  enhancement  |         Status:  new         
   Priority:  major        |      Milestone:  sage-4.7.2  
  Component:  misc         |       Keywords:              
Work_issues:               |       Upstream:  N/A         
   Reviewer:               |         Author:  Volker Braun
     Merged:               |   Dependencies:              
---------------------------+------------------------------------------------
Description changed by vbraun:

Old description:

> This ticket implements a cached module importer for Python. It hooks into
> the Python import framework and caches whether a module was found and if
> so, its location. The cache is persistent over sessions.
>
> Except for the location of the persistent storage (in
> `DOT_SAGE/import_cache.txt`) there is no dependency on Sage.
>
> By default, the cached importer is not active. To activate it on your
> system, you have to import the module at one point in the Python startup,
> preferably as early as possible. The easiest way to do so is to create a
> file `$SAGE_LOCAL/lib/python/site-packages/sitecustomize.py` containing
> the single line
> {{{
> import sage.misc.importer
> }}}
>
> Some benchmarks:
> {{{
> #!sh
>
> }}}

New description:

 This ticket implements a cached module importer for Python. It hooks into
 the Python import framework and caches whether a module was found and if
 so, its location. The cache is persistent over sessions.

 Except for the location of the persistent storage (in
 `$DOT_SAGE/import_cache.txt`) there is no dependency on Sage.

 By default, the cached importer is not active. To activate it on your
 system, you have to import the module at one point in the Python startup,
 preferably as early as possible. The easiest way to do so is to create a
 file `$SAGE_LOCAL/lib/python/site-packages/sitecustomize.py` containing
 the single line
 {{{
 import sage.misc.importer
 }}}

 Some benchmarks:
 {{{
 #!sh
 [vbraun@volker-laptop-two ~]$ rm ~/.sage/import_cache.txt
 [vbraun@volker-laptop-two ~]$ strace -e file -f sage -c quit |& grep
 ENOENT | wc
   20173  243630 3085872
 [vbraun@volker-laptop-two ~]$ strace -e file -f sage -c quit |& grep
 ENOENT | wc
    2276   28856  258830
 [vbraun@volker-laptop-two ~]$ strace -e file -f sage -c quit |& grep
 ENOENT | wc
    2276   28905  257473
 }}}
 Sage-4.7.2.alpha1 startuptime on my laptop decreased from 0.89s to 0.78s
 with the cached importer.

 Note: at this point you should erase the `import_cache.txt` before and
 after rebuilding the sage library. In the future, we might introduce
 timestamps for the cache to be erased automatically if it is obsolete.

--

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11729#comment:1>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to