Skip to content

prepend_module_path is very slow #3084

@Micket

Description

@Micket

One a system with HMNS and quite a few modules installed. Most commands take 2-5 minutes to get going due to it. Pretty rough.

python -O -m cProfile -s cumtime /path/to/main.py foss-2019b -Dr output below

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.007    0.007  105.525  105.525 main.py:37(<module>)
        1    0.000    0.000  104.931  104.931 main.py:182(main)
      158    0.078    0.000   97.561    0.617 modules.py:705(run_module)
      164    0.002    0.000   96.834    0.590 subprocess.py:448(communicate)
      162    0.003    0.000   96.831    0.598 subprocess.py:1093(_communicate)
      162    0.013    0.000   96.822    0.598 subprocess.py:1126(_communicate_with_poll)
     2336   96.795    0.041   96.795    0.041 {built-in method poll}
       71    0.001    0.000   89.467    1.260 modules.py:1481(modules_tool)
       71    0.002    0.000   89.462    1.260 modules.py:1209(__init__)
       71    0.003    0.000   89.421    1.259 modules.py:153(__init__)
       71    0.002    0.000   89.329    1.258 modules.py:402(check_module_path)
      213    0.003    0.000   89.302    0.419 modules.py:1323(prepend_module_path)
      143    0.007    0.000   89.261    0.624 modules.py:1308(use)
 1279/894    0.012    0.000   88.251    0.099 easyconfig.py:1741(process_easyconfig)
    70/27    0.012    0.000   88.116    3.264 easyconfig.py:386(__init__)
        1    0.000    0.000   54.947   54.947 tools.py:369(parse_easyconfigs)
1326/1035    0.009    0.000   54.366    0.053 easyconfig.py:2259(_det_module_name_with)
    70/27    0.018    0.000   53.921    1.997 easyconfig.py:582(parse)
1399/1062    0.016    0.000   53.853    0.051 easyconfig.py:2228(check_ec_type)
    70/27    0.004    0.000   53.783    1.992 easyconfig.py:1352(_finalize_dependencies)
   196/73    0.003    0.000   53.699    0.736 easyconfig.py:2330(det_short_module_name)
        1    0.000    0.000   42.094   42.094 robot.py:230(dry_run)
        1    0.006    0.006   34.607   34.607 robot.py:326(resolve_dependencies)
    68/35    0.001    0.000   31.689    0.905 easyconfig.py:1933(robot_find_subtoolchain_for_dep)
1130/1043    0.017    0.000   24.467    0.023 easyconfig.py:2301(det_full_module_name)
    68/63    0.001    0.000    9.114    0.145 easyconfig.py:196(cache_aware_func)
        3    0.000    0.000    9.114    3.038 easyconfig.py:253(get_toolchain_hierarchy)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions