Skip to content
  • Jean-Christophe Fillion-Robin's avatar
    PERF: Improve startup time by 8% with lazy loading of wrapped libraries · 322809d3
    Jean-Christophe Fillion-Robin authored
    *** WORK IN PROGRESS: For now, you have to make sure SlicerApp-real and
    Slicer launcher are built to ensure the successful generation of the json
    files ***
    
    Startup time reduced from 3.8s to 3.5s with a "cold cache"
    and from 2.7s to 2.38s with a "warm cache".
    
    For each logic/mrml/dm/widgets python modules, a json files listing
    the associated attributes is generated. Then, when the application is
    initialized, the "slicer" module is created as a "lazy" module with
    the attributes associated with logic/mrml/dm/widgets set as "not loaded".
    
    Finally, as soon as an attribute not yet loaded is accessed, the specialized
    __getattribute__ loads the associated python module and update the module
    dictionary.
    
    The "lazy" module has been adapted from "itkLazy.py"
    
    Results have been gathered on Ubuntu 15.10 on a workstation with the
    following specs: 64GB / M.2 PCIe NVMe SSD / Quad Core 3.80GHz
    322809d3