beardsvibe / buildfox

Minimalistic Ninja generator
MIT License
50 stars 8 forks source link

Performance #104

Closed jimon closed 8 years ago

jimon commented 8 years ago

Looks like our parsing/engine performance is not that good. This ticket also means to came up with performance test.

For now it's possible to parse something like build.ninja from llvm project (if you generate it with cmake).

den-mentiei commented 8 years ago

Regex? ;)

jimon commented 8 years ago

Somewhat, plus generic python slowness :)

jimon commented 8 years ago

Basic investigation. Quite big input build.fox file :

Added commented out profiler code to master.

jimon commented 8 years ago

Profiling with LLVM (1512 source files)

Full report :

         4481478 function calls (4390187 primitive calls) in 2.443 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    2.443    2.443 C:\work\rnd\buildfox\buildfox.py:279(main)
        1    0.001    0.001    2.346    2.346 C:\work\rnd\buildfox\lib_engine.py:60(load)
      2/1    0.000    0.000    2.345    2.345 C:\work\rnd\buildfox\lib_parser.py:409(parse)
      2/1    0.006    0.003    2.317    2.317 C:\work\rnd\buildfox\lib_parser.py:24(parse)
3664/3649    0.019    0.000    2.261    0.001 C:\work\rnd\buildfox\lib_parser.py:36(parse_line)
     3528    0.042    0.000    1.747    0.000 C:\work\rnd\buildfox\lib_engine.py:293(on_build)
    14114    0.027    0.000    0.967    0.000 C:\work\rnd\buildfox\lib_engine.py:120(eval_find_files)
    14114    0.040    0.000    0.763    0.000 C:\work\rnd\buildfox\lib_util.py:166(find_files)
    46851    0.247    0.000    0.646    0.000 C:\Python34\lib\ntpath.py:486(normpath)
    14114    0.035    0.000    0.598    0.000 C:\work\rnd\buildfox\lib_util.py:265(<listcomp>)
    53624    0.212    0.000    0.451    0.000 C:\Python34\lib\ntpath.py:210(split)
    17640    0.053    0.000    0.444    0.000 C:\work\rnd\buildfox\lib_engine.py:127(add_files)
   100479    0.201    0.000    0.401    0.000 C:\Python34\lib\ntpath.py:139(splitdrive)
     3528    0.047    0.000    0.294    0.000 C:\work\rnd\buildfox\lib_parser.py:105(read_build)
    45616    0.065    0.000    0.227    0.000 C:\work\rnd\buildfox\lib_parser.py:304(read_path)
     3543    0.010    0.000    0.184    0.000 C:\work\rnd\buildfox\lib_parser.py:247(read_nested_assigns)
73844/28228    0.065    0.000    0.177    0.000 C:\work\rnd\buildfox\lib_engine.py:207(eval_path_transform)
   988226    0.161    0.000    0.161    0.000 {built-in method isinstance}
    17642    0.022    0.000    0.156    0.000 C:\work\rnd\buildfox\lib_engine.py:222(<listcomp>)
    17066    0.112    0.000    0.152    0.000 C:\work\rnd\buildfox\lib_parser.py:352(next_line)
    62700    0.150    0.000    0.150    0.000 {method 'match' of '_sre.SRE_Pattern' objects}
    13400    0.018    0.000    0.121    0.000 C:\work\rnd\buildfox\lib_parser.py:325(next_nested)
    69072    0.073    0.000    0.120    0.000 C:\work\rnd\buildfox\lib_engine.py:86(eval)
64394/18779    0.060    0.000    0.113    0.000 C:\work\rnd\buildfox\lib_engine.py:458(to_esc)
     8844    0.017    0.000    0.095    0.000 C:\work\rnd\buildfox\lib_engine.py:467(<listcomp>)
     3528    0.033    0.000    0.093    0.000 C:\work\rnd\buildfox\lib_engine.py:239(write_assigns)
     7056    0.010    0.000    0.086    0.000 C:\work\rnd\buildfox\lib_engine.py:135(add_generated_files)
   189026    0.046    0.000    0.081    0.000 C:\Python34\lib\ntpath.py:59(_get_dot)
   403607    0.079    0.000    0.079    0.000 {method 'replace' of 'str' objects}
     3528    0.005    0.000    0.076    0.000 C:\work\rnd\buildfox\lib_util.py:262(<listcomp>)
   153316    0.038    0.000    0.067    0.000 C:\Python34\lib\ntpath.py:41(_get_sep)
   147350    0.036    0.000    0.062    0.000 C:\Python34\lib\ntpath.py:47(_get_altsep)
        1    0.008    0.008    0.059    0.059 C:\work\rnd\buildfox\lib_ide_vs.py:89(gen_vs)
   313126    0.050    0.000    0.050    0.000 {method 'startswith' of 'str' objects}
     9857    0.008    0.000    0.050    0.000 C:\work\rnd\buildfox\lib_parser.py:253(read_nested_assign)
   100479    0.026    0.000    0.044    0.000 C:\Python34\lib\ntpath.py:65(_get_colon)
    45616    0.031    0.000    0.043    0.000 C:\work\rnd\buildfox\lib_util.py:25(wildcard_regex)
    17064    0.026    0.000    0.042    0.000 C:\work\rnd\buildfox\lib_parser.py:276(read_identifier)
   100479    0.024    0.000    0.042    0.000 C:\Python34\lib\ntpath.py:35(_get_empty)
     4006    0.002    0.000    0.038    0.000 C:\Python34\lib\ntpath.py:251(dirname)
        4    0.008    0.002    0.037    0.009 {method 'write' of '_io.TextIOWrapper' objects}
     4004    0.002    0.000    0.037    0.000 C:\Python34\lib\ntpath.py:244(basename)
        1    0.000    0.000    0.036    0.036 C:\work\rnd\buildfox\lib_engine.py:79(save)
    69191    0.031    0.000    0.031    0.000 {method 'sub' of '_sre.SRE_Pattern' objects}
463125/463116    0.030    0.000    0.030    0.000 {built-in method len}
     9935    0.009    0.000    0.029    0.000 C:\work\rnd\buildfox\lib_engine.py:224(eval_transform)
        4    0.000    0.000    0.029    0.007 C:\Python34\lib\encodings\cp1252.py:18(encode)
        4    0.029    0.007    0.029    0.007 {built-in method charmap_encode}
        2    0.000    0.000    0.028    0.014 C:\work\rnd\buildfox\lib_parser.py:11(__init__)
     1231    0.001    0.000    0.025    0.000 C:\Python34\lib\ntpath.py:542(abspath)
    53624    0.014    0.000    0.024    0.000 C:\Python34\lib\ntpath.py:53(_get_bothseps)
    46851    0.012    0.000    0.020    0.000 C:\Python34\lib\ntpath.py:71(_get_special)
     9976    0.011    0.000    0.020    0.000 C:\work\rnd\buildfox\lib_parser.py:259(read_assign_op)
   109955    0.020    0.000    0.020    0.000 {method 'strip' of 'str' objects}
    47047    0.018    0.000    0.018    0.000 {method 'split' of 'str' objects}
    17062    0.017    0.000    0.017    0.000 {method 'index' of 'str' objects}
        2    0.008    0.004    0.016    0.008 {method 'read' of '_io.TextIOWrapper' objects}
   129301    0.015    0.000    0.015    0.000 {method 'append' of 'list' objects}
    55728    0.013    0.000    0.013    0.000 {method 'join' of 'str' objects}
    50768    0.012    0.000    0.012    0.000 {method 'add' of 'set' objects}
    21036    0.009    0.000    0.012    0.000 C:\work\rnd\buildfox\lib_parser.py:287(expect_token)
        2    0.012    0.006    0.012    0.006 {method 'splitlines' of 'str' objects}
    49235    0.010    0.000    0.010    0.000 {method 'endswith' of 'str' objects}
    63952    0.009    0.000    0.009    0.000 {method 'group' of '_sre.SRE_Match' objects}
        2    0.000    0.000    0.008    0.004 C:\Python34\lib\encodings\cp1252.py:22(decode)
        2    0.008    0.004    0.008    0.004 {built-in method charmap_decode}
    62680    0.006    0.000    0.006    0.000 {method 'span' of '_sre.SRE_Match' objects}
      213    0.001    0.000    0.006    0.000 C:\Python34\lib\uuid.py:614(uuid5)
        6    0.005    0.001    0.005    0.001 {built-in method open}
    27118    0.005    0.000    0.005    0.000 {method 'get' of 'dict' objects}
     5736    0.002    0.000    0.004    0.000 C:\work\rnd\buildfox\lib_ide_vs.py:94(<lambda>)
        1    0.000    0.000    0.004    0.004 C:\work\rnd\buildfox\lib_ide_vs.py:110(<listcomp>)
     5736    0.002    0.000    0.004    0.000 C:\work\rnd\buildfox\lib_ide_vs.py:95(<lambda>)
      2/1    0.000    0.000    0.003    0.003 <frozen importlib._bootstrap>:2234(_find_and_load)
      2/1    0.000    0.000    0.003    0.003 <frozen importlib._bootstrap>:2207(_find_and_load_unlocked)
     4120    0.002    0.000    0.002    0.000 C:\work\rnd\buildfox\lib_engine.py:260(on_comment)
        1    0.000    0.000    0.002    0.002 C:\work\rnd\buildfox\lib_engine.py:429(on_include)
      213    0.001    0.000    0.002    0.000 C:\Python34\lib\uuid.py:235(bytes)
      2/1    0.000    0.000    0.002    0.002 <frozen importlib._bootstrap>:1186(_load_unlocked)
        1    0.000    0.000    0.002    0.002 C:\work\rnd\buildfox\lib_engine.py:76(text)
     9935    0.002    0.000    0.002    0.000 C:\work\rnd\buildfox\lib_engine.py:196(eval_assign_op)
        1    0.000    0.000    0.002    0.002 <frozen importlib._bootstrap>:1122(_exec)
        1    0.000    0.000    0.002    0.002 <frozen importlib._bootstrap>:1465(exec_module)
     1421    0.002    0.000    0.002    0.000 C:\work\rnd\buildfox\lib_engine.py:257(on_empty_lines)
      2/1    0.000    0.000    0.002    0.002 <frozen importlib._bootstrap>:313(_call_with_frames_removed)
        1    0.000    0.000    0.002    0.002 {built-in method exec}
        1    0.000    0.000    0.002    0.002 C:\Python34\lib\hashlib.py:53(<module>)
        1    0.000    0.000    0.001    0.001 <frozen importlib._bootstrap>:1156(_load_backward_compatible)
        2    0.000    0.000    0.001    0.001 <frozen importlib._bootstrap>:534(_check_name_wrapper)
        1    0.000    0.000    0.001    0.001 <frozen importlib._bootstrap>:1708(load_module)
        1    0.001    0.001    0.001    0.001 {built-in method load_dynamic}
    11708    0.001    0.000    0.001    0.000 {method 'lower' of 'str' objects}
      121    0.000    0.000    0.001    0.000 C:\work\rnd\buildfox\lib_engine.py:408(on_assign)
     1231    0.001    0.000    0.001    0.000 {built-in method _getfullpathname}
      214    0.001    0.000    0.001    0.000 C:\Python34\lib\uuid.py:104(__init__)
        1    0.000    0.000    0.001    0.001 C:\Python34\lib\argparse.py:1600(__init__)
       31    0.000    0.000    0.001    0.000 C:\Python34\lib\re.py:277(_compile)
        2    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:2147(_find_spec)
     3545    0.001    0.000    0.001    0.000 C:\work\rnd\buildfox\lib_parser.py:315(read_eol)
        6    0.000    0.000    0.001    0.000 C:\Python34\lib\sre_compile.py:563(compile)
       11    0.000    0.000    0.001    0.000 C:\Python34\lib\argparse.py:1304(add_argument)
        2    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:1934(find_spec)
        2    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:1902(_get_spec)
        1    0.001    0.001    0.001    0.001 C:\work\rnd\buildfox\lib_ide_vs.py:103(<listcomp>)
        5    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:2016(find_spec)
       25    0.000    0.000    0.001    0.000 C:\Python34\lib\re.py:221(compile)
     3408    0.001    0.000    0.001    0.000 {method 'insert' of 'bytearray' objects}
     2269    0.000    0.000    0.000    0.000 {method 'lstrip' of 'str' objects}
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1727(parse_args)
        8    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:68(_path_stat)
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1734(parse_known_args)
        8    0.000    0.000    0.000    0.000 {built-in method stat}
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1769(_parse_known_args)
        3    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1223(__init__)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:750(parse)
      214    0.000    0.000    0.000    0.000 C:\Python34\lib\uuid.py:230(__str__)
        2    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_util.py:17(rel_dir)
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2345(_get_formatter)
      910    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_engine.py:94(repl_escaped)
      9/6    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:363(_parse_sub)
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:151(__init__)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_compile.py:548(_code)
      119    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_parser.py:242(read_assign)
     1427    0.000    0.000    0.000    0.000 {method 'extend' of 'list' objects}
     10/7    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:441(_parse)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\re.py:157(match)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1534(get_code)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\ntpath.py:562(relpath)
        5    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1837(consume_optional)
      119    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_engine.py:99(repl)
       15    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_engine.py:263(on_rule)
      214    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:2264(_handle_fromlist)
        5    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2044(_match_argument)
     18/6    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_compile.py:70(_compile)
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1914(consume_positionals)
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2065(_match_arguments_partial)
      216    0.000    0.000    0.000    0.000 {built-in method from_bytes}
      247    0.000    0.000    0.000    0.000 {built-in method hasattr}
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1423(find_spec)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1408(_search_registry)
      213    0.000    0.000    0.000    0.000 {method 'digest' of '_hashlib.HASH' objects}
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_compile.py:444(_compile_info)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1401(_open_registry)
        4    0.000    0.000    0.000    0.000 {built-in method OpenKey}
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1621(get_data)
      214    0.000    0.000    0.000    0.000 {built-in method openssl_sha1}
        3    0.000    0.000    0.000    0.000 C:\Python34\lib\gettext.py:497(gettext)
        3    0.000    0.000    0.000    0.000 C:\Python34\lib\gettext.py:459(dgettext)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:87(_path_isfile)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:78(_path_is_mode_type)
        3    0.000    0.000    0.000    0.000 C:\Python34\lib\gettext.py:393(translation)
        3    0.000    0.000    0.000    0.000 C:\Python34\lib\gettext.py:353(find)
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1707(_add_action)
       52    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:195(__next)
       41    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:220(get)
    25/13    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:152(getwidth)
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1552(_add_action)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\shlex.py:271(split)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:654(_compile_bytecode)
       23    0.000    0.000    0.000    0.000 C:\Python34\lib\os.py:628(__getitem__)
       63    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:142(__getitem__)
       17    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:50(_path_join)
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_util.py:315(cxx_defines)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1816(take_action)
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_ide_vs.py:101(<listcomp>)
       20    0.000    0.000    0.000    0.000 C:\Python34\lib\ntpath.py:81(normcase)
        1    0.000    0.000    0.000    0.000 {built-in method loads}
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1351(add_argument_group)
       15    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_parser.py:100(read_rule)
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1361(_add_action)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\_bootlocale.py:11(getpreferredencoding)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1530(__init__)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1631(path_stats)
       10    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1441(_get_optional_kwargs)
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:572(_format_args)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1099(create)
       12    0.000    0.000    0.000    0.000 C:\Python34\lib\_collections_abc.py:419(get)
        5    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_compile.py:227(_compile_charset)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:261(__enter__)
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_engine.py:382(on_default)
        2    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_engine.py:254(write_rel_path)
        6    0.000    0.000    0.000    0.000 {built-in method _getdefaultlocale}
        1    0.000    0.000    0.000    0.000 {method 'read' of '_io.FileIO' objects}
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1019(init_module_attrs)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2227(_get_values)
      214    0.000    0.000    0.000    0.000 {method 'count' of 'list' objects}
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:437(cache_from_source)
       17    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:52(<listcomp>)
       23    0.000    0.000    0.000    0.000 C:\Python34\lib\os.py:696(encodekey)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\shlex.py:20(__init__)
        5    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_compile.py:255(_optimize_charset)
       34    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1275(register)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:274(_get_module_lock)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:190(__init__)
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\uuid.py:596(uuid4)
       17    0.000    0.000    0.000    0.000 {method 'format' of 'str' objects}
        3    0.000    0.000    0.000    0.000 C:\Python34\lib\gettext.py:111(_expand_lang)
       55    0.000    0.000    0.000    0.000 {built-in method min}
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:785(__init__)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:824(cached)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:2011(_get_spec)
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\genericpath.py:69(commonprefix)
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1477(_pop_action_class)
       26    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1279(_registry_get)
        3    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:56(_path_split)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\shlex.py:265(__next__)
        7    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_compile.py:418(_simple)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\hashlib.py:98(__get_openssl_constructor)
       23    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:150(append)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:827(__init__)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:172(__init__)
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_util.py:322(cxx_includedirs)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2183(_get_nargs_pattern)
       28    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:214(match)
        4    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:862(__init__)
        7    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1870(_path_importer_cache)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\shlex.py:85(get_token)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:599(_validate_bytecode_header)
        4    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2279(_get_value)
        8    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:307(_escape)
       18    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:90(__init__)
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_parser.py:171(read_include)
       23    0.000    0.000    0.000    0.000 C:\Python34\lib\os.py:690(check_str)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1726(is_package)
        1    0.000    0.000    0.000    0.000 {built-in method urandom}
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_parser.py:177(read_one_path)
       29    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:138(__len__)
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:565(format)
       15    0.000    0.000    0.000    0.000 {built-in method max}
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\shlex.py:117(read_token)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1266(find_spec)
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_engine.py:35(__init__)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:884(spec_from_file_location)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:902(__init__)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:268(__exit__)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:885(__init__)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:192(acquire)
       18    0.000    0.000    0.000    0.000 {built-in method getattr}
       19    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:518(_verbose_message)
       12    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_compile.py:545(isstring)
       36    0.000    0.000    0.000    0.000 {method 'rstrip' of 'str' objects}
        4    0.000    0.000    0.000    0.000 {built-in method allocate_lock}
        3    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1481(_get_handler)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:217(release)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:147(__exit__)
        8    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:2120(__enter__)
        6    0.000    0.000    0.000    0.000 {built-in method compile}
        3    0.000    0.000    0.000    0.000 {built-in method any}
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:196(__init__)
        2    0.000    0.000    0.000    0.000 {built-in method is_builtin}
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_parser.py:158(read_default)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:738(fix_flags)
        6    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:67(__init__)
        3    0.000    0.000    0.000    0.000 C:\Python34\lib\locale.py:373(normalize)
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:556(_metavar_formatter)
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1003(__init__)
        3    0.000    0.000    0.000    0.000 {method 'rsplit' of 'str' objects}
       11    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1490(_check_conflict)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:739(__exit__)
        2    0.000    0.000    0.000    0.000 {built-in method getcwd}
       17    0.000    0.000    0.000    0.000 {built-in method setattr}
       40    0.000    0.000    0.000    0.000 {method 'setdefault' of 'dict' objects}
        8    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2081(_parse_optional)
        8    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:2124(__exit__)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:45(_r_long)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_compile.py:423(_generate_overlap_table)
        4    0.000    0.000    0.000    0.000 C:\Python34\lib\codecs.py:183(__init__)
       21    0.000    0.000    0.000    0.000 {method 'pop' of 'dict' objects}
        3    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:83(closegroup)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:129(_new_module)
        5    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1944(<listcomp>)
       11    0.000    0.000    0.000    0.000 {method 'rpartition' of 'str' objects}
        9    0.000    0.000    0.000    0.000 {method 'find' of 'bytearray' objects}
       24    0.000    0.000    0.000    0.000 {method 'upper' of 'str' objects}
        5    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:30(_relax_case)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1336(find_spec)
        3    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:72(opengroup)
        4    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:856(__call__)
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1719(_get_positional_actions)
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1425(_get_positional_kwargs)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:257(__init__)
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_engine.py:27(__init__)
        7    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:146(__setitem__)
       10    0.000    0.000    0.000    0.000 {method 'items' of 'dict' objects}
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:790(__init__)
        1    0.000    0.000    0.000    0.000 {method 'union' of 'set' objects}
        9    0.000    0.000    0.000    0.000 {method 'remove' of 'list' objects}
        9    0.000    0.000    0.000    0.000 {method 'find' of 'str' objects}
        2    0.000    0.000    0.000    0.000 {method 'read' of '_io.StringIO' objects}
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2071(<listcomp>)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\ntpath.py:581(<listcomp>)
        4    0.000    0.000    0.000    0.000 C:\Python34\lib\sre_parse.py:140(__delitem__)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:842(parent)
       10    0.000    0.000    0.000    0.000 {built-in method release_lock}
        4    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2305(_check_value)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:879(__call__)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\codecs.py:257(__init__)
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1720(<listcomp>)
        4    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1636(identity)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1000(__init__)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1591(__init__)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1697(__init__)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\ntpath.py:582(<listcomp>)
        4    0.000    0.000    0.000    0.000 {built-in method get_ident}
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1729(<genexpr>)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:728(__init__)
        4    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:148(<genexpr>)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:144(__enter__)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:141(__init__)
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2272(<listcomp>)
        1    0.000    0.000    0.000    0.000 {built-in method vars}
        8    0.000    0.000    0.000    0.000 {built-in method acquire_lock}
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:2075(<listcomp>)
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:732(__enter__)
        2    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:288(cb)
        1    0.000    0.000    0.000    0.000 {built-in method _fix_co_filename}
        2    0.000    0.000    0.000    0.000 {built-in method is_frozen}
        1    0.000    0.000    0.000    0.000 {built-in method openssl_md5}
        2    0.000    0.000    0.000    0.000 C:\Python34\lib\shlex.py:262(__iter__)
        7    0.000    0.000    0.000    0.000 {built-in method ord}
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:850(has_location)
        1    0.000    0.000    0.000    0.000 {built-in method openssl_sha384}
        1    0.000    0.000    0.000    0.000 {built-in method openssl_sha224}
        4    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:742(<genexpr>)
        1    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:1203(__init__)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
        6    0.000    0.000    0.000    0.000 {built-in method globals}
        5    0.000    0.000    0.000    0.000 C:\Python34\lib\argparse.py:587(<listcomp>)
        1    0.000    0.000    0.000    0.000 {built-in method openssl_sha512}
        1    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1616(get_filename)
        1    0.000    0.000    0.000    0.000 {built-in method openssl_sha256}
        1    0.000    0.000    0.000    0.000 {built-in method iter}
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_util.py:317(<listcomp>)
        1    0.000    0.000    0.000    0.000 {method 'groups' of '_sre.SRE_Match' objects}
        2    0.000    0.000    0.000    0.000 {method 'keys' of 'dict' objects}
        1    0.000    0.000    0.000    0.000 C:\work\rnd\buildfox\lib_util.py:324(<listcomp>)
        3    0.000    0.000    0.000    0.000 {method 'reverse' of 'list' objects}
       26    0.000    0.000    0.000    0.000 {built-in method callable}
jimon commented 8 years ago

Latest check : ~2 seconds on llvm codebase on i7 3770, which is ok imho