BlueBrain / nmodl

Code Generation Framework For NEURON MODeling Language
https://bluebrain.github.io/nmodl/
Apache License 2.0
56 stars 15 forks source link

Compile time investigation of NMODL #299

Open pramodk opened 4 years ago

pramodk commented 4 years ago

Multiple users have seen very high compilation times. We need to look into what is taking time to build the NMODL project. We should break the build time to make better decision in #298.

pramodk commented 4 years ago

Compilation time using Apple Clang 10 on my MacBook

 2020-04-16 21:51:54 ☆  bluebrain355 in ~/workarena/repos/bbp/incubator/nocmodl/build
± |master → origin {32} ?:4 ✗| → cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/install -DPYTHON_EXECUTABLE=`which python3.6` -DCMAKE_CXX_FLAGS="-ftime-report"
-- The CXX compiler identification is AppleClang 10.0.1.10010046
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CHECKING FOR FLEX/BISON
-- Found FLEX: /usr/local/opt/flex/bin/flex (found suitable version "2.6.4", minimum required is "2.6")
-- Found BISON: /usr/local/opt/bison/bin/bison (found suitable version "3.5.2", minimum required is "3.0")
-- NMODL_FORMATTING: OFF
-- NMODL_FORMATTING_ON: all
-- NMODL_FORMATTING_CPP_CHANGES_ONLY: OFF
-- NMODL_TEST_FORMATTING: OFF
-- NMODL_FORMATTING_NO_SUBMODULES: ON
-- NMODL_CLANG_FORMAT: OFF
-- NMODL_CMAKE_FORMAT: OFF
-- NMODL_PRECOMMIT: OFF
-- NMODL_PRECOMMIT_REGEN: OFF
-- NMODL_STATIC_ANALYSIS: OFF
-- NMODL_TEST_STATIC_ANALYSIS: OFF
-- Found PythonInterp: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 (found suitable version "3.6.8", minimum required is "3.5")
-- Found ClangFormat: /usr/local/opt/llvm@7/bin/clang-format (found version "7.0.1")
--  Adding Flex include path as : /usr/local/opt/flex/include/
-- Found Git: /usr/local/bin/git (found version "2.21.0")
-- CHECKING FOR PYTHON
-- Found PythonInterp: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 (found suitable version "3.6.8", minimum required is "3.6")
-- Found jinja2: /Users/kumbhar/Library/Python/3.6/lib/python/site-packages/jinja2 (found suitable version "2.10.3", minimum required is "2.9.3")
-- Found pytest: /Users/kumbhar/Library/Python/3.6/lib/python/site-packages/pytest.py (found suitable version "5.2.1", minimum required is "3.3.0")
-- Found sympy: /Users/kumbhar/Library/Python/3.6/lib/python/site-packages/sympy (found suitable version "1.4", minimum required is "1.2")
-- Found textwrap: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/textwrap.py (Required is at least version "0.9")
-- Found yaml: /Users/kumbhar/Library/Python/3.6/lib/python/site-packages/yaml (found suitable version "5.1.2", minimum required is "3.12")
-- INCLUDING PYBIND11
-- Found PythonInterp: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 (found version "3.6.8")
-- Found PythonLibs: /Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6m.dylib
-- pybind11 v2.3.dev0
-- INCLUDING FMT
-- Version: 6.1.3
-- Build type:
-- CXX_STANDARD: 11
-- Performing Test has_std_11_flag
-- Performing Test has_std_11_flag - Success
-- Performing Test has_std_0x_flag
-- Performing Test has_std_0x_flag - Success
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS - Success
-- Performing Test FMT_HAS_VARIANT
-- Performing Test FMT_HAS_VARIANT - Success
-- Required features: cxx_variadic_templates
-- Performing Test HAS_NULLPTR_WARNING
-- Performing Test HAS_NULLPTR_WARNING - Success
-- Looking for strtod_l
-- Looking for strtod_l - found
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/build

 2020-04-16 21:52:22 ☆  bluebrain355 in ~/workarena/repos/bbp/incubator/nocmodl/build
± |master → origin {32} ?:4 ✗| → make -j
2020-04-16 22:36:08 ☆  bluebrain355 in ~/workarena/repos/bbp/incubator/nocmodl/build
± |master → origin {32} ?:4 ✗| → touch ../src/lexer/modtoken.cpp src/visitors/ast_visitor.cpp src/pybind/* src/ast/ast.cpp

 2020-04-16 22:36:14 ☆  bluebrain355 in ~/workarena/repos/bbp/incubator/nocmodl/build
± |master → origin {32} ?:4 ✗| → make
[  1%] Built target pyastgen
Scanning dependencies of target lexer_obj
[  1%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/modtoken.cpp.o
===-------------------------------------------------------------------------===
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0236 ( 56.5%)   0.0023 ( 51.2%)   0.0258 ( 56.0%)   0.0267 ( 56.0%)  Code Generation Time
   0.0182 ( 43.5%)   0.0022 ( 48.8%)   0.0203 ( 44.0%)   0.0209 ( 44.0%)  LLVM IR Generation Time
   0.0417 (100.0%)   0.0044 (100.0%)   0.0461 (100.0%)   0.0476 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 0.3878 seconds (0.3971 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.3473 (100.0%)   0.0405 (100.0%)   0.3878 (100.0%)   0.3971 (100.0%)  Clang front-end timer
   0.3473 (100.0%)   0.0405 (100.0%)   0.3878 (100.0%)   0.3971 (100.0%)  Total

[  2%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/__/ast/ast.cpp.o
===-------------------------------------------------------------------------===
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   1.5418 ( 59.5%)   0.0978 ( 60.5%)   1.6397 ( 59.6%)   1.7453 ( 59.5%)  Code Generation Time
   1.0495 ( 40.5%)   0.0639 ( 39.5%)   1.1134 ( 40.4%)   1.1881 ( 40.5%)  LLVM IR Generation Time
   2.5913 (100.0%)   0.1618 (100.0%)   2.7531 (100.0%)   2.9333 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 4.9952 seconds (5.2987 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   4.6568 (100.0%)   0.3384 (100.0%)   4.9952 (100.0%)   5.2987 (100.0%)  Clang front-end timer
   4.6568 (100.0%)   0.3384 (100.0%)   4.9952 (100.0%)   5.2987 (100.0%)  Total

[ 20%] Built target lexer_obj
Scanning dependencies of target visitor_obj
[ 20%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/ast_visitor.cpp.o
===-------------------------------------------------------------------------===
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0981 ( 84.5%)   0.0089 ( 83.0%)   0.1071 ( 84.4%)   0.1133 ( 85.0%)  LLVM IR Generation Time
   0.0180 ( 15.5%)   0.0018 ( 17.0%)   0.0198 ( 15.6%)   0.0201 ( 15.0%)  Code Generation Time
   0.1161 (100.0%)   0.0107 (100.0%)   0.1268 (100.0%)   0.1333 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 1.2860 seconds (1.3594 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   1.1815 (100.0%)   0.1045 (100.0%)   1.2860 (100.0%)   1.3594 (100.0%)  Clang front-end timer
   1.1815 (100.0%)   0.1045 (100.0%)   1.2860 (100.0%)   1.3594 (100.0%)  Total

[ 38%] Built target visitor_obj
[ 40%] Built target fmt
[ 41%] Linking CXX static library liblexer.a
[ 41%] Built target lexer
[ 45%] Built target util_obj
[ 45%] Built target util
[ 45%] Linking CXX static library libvisitor.a
[ 45%] Built target visitor
[ 52%] Built target codegen
[ 52%] Linking CXX executable ../../bin/units_lexer
[ 53%] Built target units_lexer
[ 54%] Linking CXX executable ../../bin/c_lexer
[ 54%] Built target c_lexer
[ 55%] Linking CXX executable ../../bin/nmodl_lexer
[ 55%] Built target nmodl_lexer
[ 57%] Built target printer_obj
[ 59%] Built target symtab_obj
Scanning dependencies of target _nmodl
[ 59%] Building CXX object src/pybind/CMakeFiles/_nmodl.dir/pyast.cpp.o
===-------------------------------------------------------------------------===
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
  10.1683 ( 60.9%)   0.6200 ( 58.9%)  10.7882 ( 60.8%)  11.0541 ( 60.5%)  Code Generation Time
   6.5264 ( 39.1%)   0.4332 ( 41.1%)   6.9596 ( 39.2%)   7.2269 ( 39.5%)  LLVM IR Generation Time
  16.6947 (100.0%)   1.0532 (100.0%)  17.7478 (100.0%)  18.2810 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 38.1768 seconds (40.2616 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
  35.6404 (100.0%)   2.5365 (100.0%)  38.1768 (100.0%)  40.2616 (100.0%)  Clang front-end timer
  35.6404 (100.0%)   2.5365 (100.0%)  38.1768 (100.0%)  40.2616 (100.0%)  Total

[ 60%] Building CXX object src/pybind/CMakeFiles/_nmodl.dir/pyvisitor.cpp.o
===-------------------------------------------------------------------------===
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   4.5729 ( 61.2%)   0.2550 ( 57.0%)   4.8279 ( 61.0%)   4.9273 ( 61.0%)  Code Generation Time
   2.8954 ( 38.8%)   0.1923 ( 43.0%)   3.0877 ( 39.0%)   3.1566 ( 39.0%)  LLVM IR Generation Time
   7.4683 (100.0%)   0.4473 (100.0%)   7.9156 (100.0%)   8.0838 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 19.3881 seconds (19.7863 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
  18.1302 (100.0%)   1.2579 (100.0%)  19.3881 (100.0%)  19.7863 (100.0%)  Clang front-end timer
  18.1302 (100.0%)   1.2579 (100.0%)  19.3881 (100.0%)  19.7863 (100.0%)  Total

[ 60%] Building CXX object src/pybind/CMakeFiles/_nmodl.dir/pysymtab.cpp.o
===-------------------------------------------------------------------------===
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   1.5917 ( 58.7%)   0.0948 ( 56.0%)   1.6865 ( 58.5%)   1.7251 ( 58.4%)  Code Generation Time
   1.1203 ( 41.3%)   0.0745 ( 44.0%)   1.1948 ( 41.5%)   1.2277 ( 41.6%)  LLVM IR Generation Time
   2.7120 (100.0%)   0.1692 (100.0%)   2.8812 (100.0%)   2.9528 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 7.9596 seconds (8.1460 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   7.4244 (100.0%)   0.5352 (100.0%)   7.9596 (100.0%)   8.1460 (100.0%)  Clang front-end timer
   7.4244 (100.0%)   0.5352 (100.0%)   7.9596 (100.0%)   8.1460 (100.0%)  Total

[ 61%] Linking CXX shared module ../../lib/python/nmodl/_nmodl.cpython-36m-darwin.so
[ 62%] Built target _nmodl
[ 62%] Built target printer
[ 63%] Built target symtab
[ 64%] Linking CXX executable ../../bin/nmodl
[ 65%] Built target nmodl
[ 66%] Linking CXX executable ../../bin/units_parser
[ 67%] Built target units_parser
[ 68%] Linking CXX executable ../../bin/nmodl_parser
[ 68%] Built target nmodl_parser
[ 68%] Linking CXX executable ../../bin/c_parser
[ 69%] Built target c_parser
[ 69%] Linking CXX executable ../../bin/nmodl_visitor
[ 70%] Built target nmodl_visitor
[ 71%] -- COPYING NMODL PYTHON FILES --
[ 71%] Built target copy_python_files
[ 72%] Linking CXX executable ../bin/testlexer
[ 73%] Built target testlexer
[ 75%] Linking CXX executable ../bin/testunitlexer
[ 76%] Built target testunitlexer
[ 77%] Built target testnewton
[ 78%] Built target config
[ 79%] Built target test_util
[ 80%] Linking CXX executable ../bin/testunitparser
[ 80%] Built target testunitparser
[ 80%] Linking CXX executable ../bin/testsymtab
[ 81%] Built target testsymtab
[ 82%] Built target testprinter
[ 83%] Linking CXX executable ../bin/testparser
[ 84%] Built target testparser
[ 85%] Linking CXX executable ../bin/testvisitor
[ 98%] Built target testvisitor
[100%] Linking CXX executable ../bin/testmodtoken
[100%] Built target testmodtoken
pramodk commented 4 years ago

Using GCC 9 on my MacBook

± |master → origin {32} ?:4 ✗| → cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/install -DPYTHON_EXECUTABLE=`which python3.6` -DCMAKE_CXX_FLAGS="-ftime-report" -DCMAKE_CXX_COMPILER=g++-9
-- The CXX compiler identification is GNU 9.2.0
-- Checking whether CXX compiler has -isysroot
-- Checking whether CXX compiler has -isysroot - yes
-- Checking whether CXX compiler supports OSX deployment target flag
-- Checking whether CXX compiler supports OSX deployment target flag - yes
-- Check for working CXX compiler: /usr/local/bin/g++-9
-- Check for working CXX compiler: /usr/local/bin/g++-9 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CHECKING FOR FLEX/BISON
-- Found FLEX: /usr/local/opt/flex/bin/flex (found suitable version "2.6.4", minimum required is "2.6")
-- Found BISON: /usr/local/opt/bison/bin/bison (found suitable version "3.5.2", minimum required is "3.0")
-- NMODL_FORMATTING: OFF
-- NMODL_FORMATTING_ON: all
-- NMODL_FORMATTING_CPP_CHANGES_ONLY: OFF
-- NMODL_TEST_FORMATTING: OFF
-- NMODL_FORMATTING_NO_SUBMODULES: ON
-- NMODL_CLANG_FORMAT: OFF
-- NMODL_CMAKE_FORMAT: OFF
-- NMODL_PRECOMMIT: OFF
-- NMODL_PRECOMMIT_REGEN: OFF
-- NMODL_STATIC_ANALYSIS: OFF
-- NMODL_TEST_STATIC_ANALYSIS: OFF
-- Found PythonInterp: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 (found suitable version "3.6.8", minimum required is "3.5")
-- Found ClangFormat: /usr/local/opt/llvm@7/bin/clang-format (found version "7.0.1")
--  Adding Flex include path as : /usr/local/opt/flex/include/
-- Found Git: /usr/local/bin/git (found version "2.21.0")
-- CHECKING FOR PYTHON
-- Found PythonInterp: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 (found suitable version "3.6.8", minimum required is "3.6")
-- Found jinja2: /Users/kumbhar/Library/Python/3.6/lib/python/site-packages/jinja2 (found suitable version "2.10.3", minimum required is "2.9.3")
-- Found pytest: /Users/kumbhar/Library/Python/3.6/lib/python/site-packages/pytest.py (found suitable version "5.2.1", minimum required is "3.3.0")
-- Found sympy: /Users/kumbhar/Library/Python/3.6/lib/python/site-packages/sympy (found suitable version "1.4", minimum required is "1.2")
-- Found textwrap: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/textwrap.py (Required is at least version "0.9")
-- Found yaml: /Users/kumbhar/Library/Python/3.6/lib/python/site-packages/yaml (found suitable version "5.1.2", minimum required is "3.12")
-- INCLUDING PYBIND11
-- Found PythonInterp: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 (found version "3.6.8")
-- Found PythonLibs: /Library/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6m.dylib
-- pybind11 v2.3.dev0
-- INCLUDING FMT
-- Version: 6.1.3
-- Build type:
-- CXX_STANDARD: 11
-- Performing Test has_std_11_flag
-- Performing Test has_std_11_flag - Success
-- Performing Test has_std_0x_flag
-- Performing Test has_std_0x_flag - Success
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS - Success
-- Performing Test FMT_HAS_VARIANT
-- Performing Test FMT_HAS_VARIANT - Success
-- Required features: cxx_variadic_templates
-- Looking for strtod_l
-- Looking for strtod_l - found
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/build_gcc

 2020-04-16 22:00:11 ☆  bluebrain355 in ~/workarena/repos/bbp/incubator/nocmodl/build_gcc
± |master → origin {32} ?:4 ✗| → make -j
....
2020-04-16 23:17:56 ☆  bluebrain355 in ~/workarena/repos/bbp/incubator/nocmodl/build_gcc
± |master → origin {32} U:1 ?:4 ✗| → make
[  1%] Built target pyastgen
Scanning dependencies of target lexer_obj
[  1%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/modtoken.cpp.o

Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  1%)    1362 kB (  3%)
 phase parsing                      :   0.66 ( 92%)   0.32 ( 97%)   1.00 ( 92%)   44555 kB ( 89%)
 phase lang. deferred               :   0.04 (  6%)   0.01 (  3%)   0.05 (  5%)    3045 kB (  6%)
 phase opt and generate             :   0.02 (  3%)   0.00 (  0%)   0.02 (  2%)     951 kB (  2%)
 phase finalize                     :   0.00 (  0%)   0.00 (  0%)   0.01 (  1%)       0 kB (  0%)
 |name lookup                       :   0.14 ( 19%)   0.04 ( 12%)   0.17 ( 16%)    1747 kB (  3%)
 |overload resolution               :   0.05 (  7%)   0.01 (  3%)   0.04 (  4%)    2081 kB (  4%)
 callgraph construction             :   0.00 (  0%)   0.00 (  0%)   0.01 (  1%)     116 kB (  0%)
 preprocessing                      :   0.16 ( 22%)   0.09 ( 27%)   0.27 ( 25%)    9541 kB ( 19%)
 parser (global)                    :   0.19 ( 26%)   0.10 ( 30%)   0.23 ( 21%)   12508 kB ( 25%)
 parser struct body                 :   0.09 ( 13%)   0.03 (  9%)   0.18 ( 17%)    7406 kB ( 15%)
 parser function body               :   0.05 (  7%)   0.02 (  6%)   0.10 (  9%)    1671 kB (  3%)
 parser inl. func. body             :   0.03 (  4%)   0.01 (  3%)   0.01 (  1%)    1150 kB (  2%)
 parser inl. meth. body             :   0.03 (  4%)   0.04 ( 12%)   0.07 (  6%)    3599 kB (  7%)
 template instantiation             :   0.15 ( 21%)   0.01 (  3%)   0.18 ( 17%)   11662 kB ( 23%)
 tree switch lowering               :   0.01 (  1%)   0.00 (  0%)   0.00 (  0%)       0 kB (  0%)
 varconst                           :   0.00 (  0%)   0.02 (  6%)   0.00 (  0%)       0 kB (  0%)
 LRA non-specific                   :   0.00 (  0%)   0.00 (  0%)   0.01 (  1%)       2 kB (  0%)
 symout                             :   0.00 (  0%)   0.01 (  3%)   0.01 (  1%)       0 kB (  0%)
 initialize rtl                     :   0.01 (  1%)   0.00 (  0%)   0.00 (  0%)      12 kB (  0%)
 TOTAL                              :   0.72          0.33          1.09          49925 kB
[  2%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/__/ast/ast.cpp.o

Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)    1362 kB (  0%)
 phase parsing                      :   4.23 ( 26%)   1.47 ( 32%)   5.93 ( 26%)  304400 kB ( 31%)
 phase lang. deferred               :   2.27 ( 14%)   0.69 ( 15%)   3.16 ( 14%)  167123 kB ( 17%)
 phase opt and generate             :   9.63 ( 59%)   2.43 ( 53%)  13.44 ( 59%)  523501 kB ( 53%)
 phase last asm                     :   0.08 (  0%)   0.01 (  0%)   0.10 (  0%)     546 kB (  0%)
 |name lookup                       :   0.75 (  5%)   0.56 ( 12%)   1.56 (  7%)   10604 kB (  1%)
 |overload resolution               :   2.26 ( 14%)   0.71 ( 15%)   2.90 ( 13%)  149129 kB ( 15%)
 garbage collection                 :   0.55 (  3%)   0.01 (  0%)   0.58 (  3%)       0 kB (  0%)
 dump files                         :   0.59 (  4%)   0.60 ( 13%)   1.39 (  6%)       0 kB (  0%)
 callgraph construction             :   0.54 (  3%)   0.12 (  3%)   0.66 (  3%)   21835 kB (  2%)
 callgraph optimization             :   0.30 (  2%)   0.15 (  3%)   0.57 (  3%)     256 kB (  0%)
 ipa function summary               :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)       1 kB (  0%)
 ipa dead code removal              :   0.04 (  0%)   0.00 (  0%)   0.07 (  0%)       0 kB (  0%)
 ipa inlining heuristics            :   0.09 (  1%)   0.01 (  0%)   0.10 (  0%)       0 kB (  0%)
 ipa various optimizations          :   0.02 (  0%)   0.00 (  0%)   0.03 (  0%)       0 kB (  0%)
 ipa free lang data                 :   0.01 (  0%)   0.00 (  0%)   0.02 (  0%)       0 kB (  0%)
 ipa free inline summary            :   0.03 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 cfg construction                   :   0.03 (  0%)   0.02 (  0%)   0.07 (  0%)    2684 kB (  0%)
 cfg cleanup                        :   0.17 (  1%)   0.03 (  1%)   0.19 (  1%)      33 kB (  0%)
 trivially dead code                :   0.10 (  1%)   0.00 (  0%)   0.11 (  0%)       0 kB (  0%)
 df scan insns                      :   0.27 (  2%)   0.00 (  0%)   0.36 (  2%)     482 kB (  0%)
 df live regs                       :   0.11 (  1%)   0.03 (  1%)   0.16 (  1%)       0 kB (  0%)
 df reg dead/unused notes           :   0.05 (  0%)   0.01 (  0%)   0.14 (  1%)    4294 kB (  0%)
 register information               :   0.07 (  0%)   0.03 (  1%)   0.06 (  0%)       0 kB (  0%)
 alias analysis                     :   0.11 (  1%)   0.01 (  0%)   0.05 (  0%)    1521 kB (  0%)
 rebuild jump labels                :   0.06 (  0%)   0.00 (  0%)   0.05 (  0%)       0 kB (  0%)
 preprocessing                      :   0.22 (  1%)   0.19 (  4%)   0.60 (  3%)   10105 kB (  1%)
 parser (global)                    :   0.43 (  3%)   0.20 (  4%)   0.52 (  2%)   28647 kB (  3%)
 parser struct body                 :   0.20 (  1%)   0.04 (  1%)   0.30 (  1%)   24122 kB (  2%)
 parser enumerator list             :   0.00 (  0%)   0.01 (  0%)   0.00 (  0%)      96 kB (  0%)
 parser function body               :   0.45 (  3%)   0.08 (  2%)   0.52 (  2%)   29422 kB (  3%)
 parser inl. func. body             :   0.10 (  1%)   0.03 (  1%)   0.06 (  0%)    2196 kB (  0%)
 parser inl. meth. body             :   0.34 (  2%)   0.09 (  2%)   0.38 (  2%)   24010 kB (  2%)
 template instantiation             :   4.38 ( 27%)   1.41 ( 31%)   6.23 ( 28%)  352768 kB ( 35%)
 constant expression evaluation     :   0.11 (  1%)   0.05 (  1%)   0.19 (  1%)     153 kB (  0%)
 early inlining heuristics          :   0.01 (  0%)   0.00 (  0%)   0.03 (  0%)       0 kB (  0%)
 inline parameters                  :   0.05 (  0%)   0.00 (  0%)   0.11 (  0%)    9593 kB (  1%)
 integration                        :   0.00 (  0%)   0.01 (  0%)   0.00 (  0%)       0 kB (  0%)
 tree gimplify                      :   0.21 (  1%)   0.01 (  0%)   0.35 (  2%)   40314 kB (  4%)
 tree eh                            :   0.13 (  1%)   0.04 (  1%)   0.16 (  1%)    7736 kB (  1%)
 tree CFG construction              :   0.09 (  1%)   0.04 (  1%)   0.06 (  0%)   14900 kB (  1%)
 tree CFG cleanup                   :   0.18 (  1%)   0.03 (  1%)   0.15 (  1%)       0 kB (  0%)
 tree PHI insertion                 :   0.04 (  0%)   0.00 (  0%)   0.04 (  0%)    1345 kB (  0%)
 tree SSA rewrite                   :   0.01 (  0%)   0.00 (  0%)   0.06 (  0%)    6751 kB (  1%)
 tree SSA other                     :   0.10 (  1%)   0.09 (  2%)   0.19 (  1%)    1447 kB (  0%)
 tree SSA incremental               :   0.03 (  0%)   0.02 (  0%)   0.01 (  0%)       0 kB (  0%)
 tree operand scan                  :   0.07 (  0%)   0.04 (  1%)   0.14 (  1%)   16820 kB (  2%)
 tree switch lowering               :   0.01 (  0%)   0.01 (  0%)   0.06 (  0%)       4 kB (  0%)
 dominance computation              :   0.28 (  2%)   0.04 (  1%)   0.37 (  2%)       0 kB (  0%)
 out of ssa                         :   0.13 (  1%)   0.02 (  0%)   0.17 (  1%)     869 kB (  0%)
 expand vars                        :   0.07 (  0%)   0.00 (  0%)   0.10 (  0%)    4450 kB (  0%)
 expand                             :   0.51 (  3%)   0.03 (  1%)   0.55 (  2%)   49962 kB (  5%)
 post expand cleanups               :   0.06 (  0%)   0.02 (  0%)   0.08 (  0%)    6256 kB (  1%)
 varconst                           :   0.05 (  0%)   0.05 (  1%)   0.08 (  0%)       1 kB (  0%)
 jump                               :   0.05 (  0%)   0.02 (  0%)   0.09 (  0%)       0 kB (  0%)
 loop init                          :   0.08 (  0%)   0.03 (  1%)   0.15 (  1%)    7951 kB (  1%)
 loop fini                          :   0.05 (  0%)   0.00 (  0%)   0.05 (  0%)       0 kB (  0%)
 mode switching                     :   0.00 (  0%)   0.00 (  0%)   0.02 (  0%)       0 kB (  0%)
 integrated RA                      :   1.42 (  9%)   0.10 (  2%)   1.50 (  7%)  254039 kB ( 25%)
 LRA non-specific                   :   0.56 (  3%)   0.08 (  2%)   0.81 (  4%)    1616 kB (  0%)
 LRA virtuals elimination           :   0.14 (  1%)   0.05 (  1%)   0.21 (  1%)    4106 kB (  0%)
 LRA reload inheritance             :   0.04 (  0%)   0.00 (  0%)   0.05 (  0%)       0 kB (  0%)
 LRA create live ranges             :   0.09 (  1%)   0.02 (  0%)   0.14 (  1%)     422 kB (  0%)
 LRA hard reg assignment            :   0.06 (  0%)   0.01 (  0%)   0.08 (  0%)       0 kB (  0%)
 reload                             :   0.10 (  1%)   0.03 (  1%)   0.08 (  0%)       0 kB (  0%)
 thread pro- & epilogue             :   0.25 (  2%)   0.03 (  1%)   0.22 (  1%)   17045 kB (  2%)
 machine dep reorg                  :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 shorten branches                   :   0.17 (  1%)   0.00 (  0%)   0.24 (  1%)       0 kB (  0%)
 reg stack                          :   0.03 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 final                              :   0.60 (  4%)   0.11 (  2%)   0.97 (  4%)   21443 kB (  2%)
 symout                             :   0.11 (  1%)   0.02 (  0%)   0.11 (  0%)     546 kB (  0%)
 initialize rtl                     :   0.02 (  0%)   0.00 (  0%)   0.02 (  0%)      12 kB (  0%)
 early local passes                 :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 rest of compilation                :   0.99 (  6%)   0.52 ( 11%)   1.64 (  7%)   25266 kB (  3%)
 unaccounted post reload            :   0.00 (  0%)   0.01 (  0%)   0.04 (  0%)       0 kB (  0%)
 unaccounted late compilation       :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 repair loop structures             :   0.03 (  0%)   0.00 (  0%)   0.03 (  0%)       0 kB (  0%)
 TOTAL                              :  16.21          4.60         22.64         996943 kB
[ 20%] Built target lexer_obj
[ 22%] Built target fmt
[ 23%] Linking CXX static library liblexer.a
[ 23%] Built target lexer
[ 28%] Built target util_obj
[ 28%] Built target util
Scanning dependencies of target visitor_obj
[ 28%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/ast_visitor.cpp.o

Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)    1362 kB (  0%)
 phase parsing                      :   3.47 ( 65%)   1.32 ( 72%)   4.98 ( 67%)  268086 kB ( 67%)
 phase lang. deferred               :   1.68 ( 31%)   0.47 ( 26%)   2.22 ( 30%)  120496 kB ( 30%)
 phase opt and generate             :   0.20 (  4%)   0.04 (  2%)   0.26 (  3%)   10774 kB (  3%)
 |name lookup                       :   0.71 ( 13%)   0.52 ( 28%)   1.12 ( 15%)    8654 kB (  2%)
 |overload resolution               :   1.64 ( 31%)   0.53 ( 29%)   2.52 ( 34%)  120132 kB ( 30%)
 garbage collection                 :   0.20 (  4%)   0.01 (  1%)   0.20 (  3%)       0 kB (  0%)
 dump files                         :   0.01 (  0%)   0.01 (  1%)   0.00 (  0%)       0 kB (  0%)
 callgraph construction             :   0.06 (  1%)   0.00 (  0%)   0.05 (  1%)    2325 kB (  1%)
 callgraph optimization             :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)       4 kB (  0%)
 ipa free lang data                 :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 cfg cleanup                        :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)       0 kB (  0%)
 preprocessing                      :   0.32 (  6%)   0.18 ( 10%)   0.45 (  6%)   10104 kB (  3%)
 parser (global)                    :   0.27 (  5%)   0.15 (  8%)   0.52 (  7%)   24496 kB (  6%)
 parser struct body                 :   0.26 (  5%)   0.08 (  4%)   0.22 (  3%)   24361 kB (  6%)
 parser enumerator list             :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)      96 kB (  0%)
 parser function body               :   0.10 (  2%)   0.03 (  2%)   0.13 (  2%)    2640 kB (  1%)
 parser inl. func. body             :   0.05 (  1%)   0.04 (  2%)   0.10 (  1%)    2196 kB (  1%)
 parser inl. meth. body             :   0.28 (  5%)   0.11 (  6%)   0.38 (  5%)   24010 kB (  6%)
 template instantiation             :   3.56 ( 66%)   1.13 ( 62%)   4.97 ( 67%)  300643 kB ( 75%)
 constant expression evaluation     :   0.07 (  1%)   0.02 (  1%)   0.12 (  2%)      30 kB (  0%)
 tree gimplify                      :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)     643 kB (  0%)
 tree SSA rewrite                   :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)     104 kB (  0%)
 tree switch lowering               :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)       4 kB (  0%)
 dominance computation              :   0.00 (  0%)   0.01 (  1%)   0.00 (  0%)       0 kB (  0%)
 out of ssa                         :   0.00 (  0%)   0.00 (  0%)   0.02 (  0%)       5 kB (  0%)
 expand                             :   0.01 (  0%)   0.01 (  1%)   0.03 (  0%)    1101 kB (  0%)
 post expand cleanups               :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)      87 kB (  0%)
 varconst                           :   0.03 (  1%)   0.02 (  1%)   0.09 (  1%)       1 kB (  0%)
 jump                               :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 integrated RA                      :   0.03 (  1%)   0.00 (  0%)   0.02 (  0%)    4231 kB (  1%)
 LRA non-specific                   :   0.00 (  0%)   0.00 (  0%)   0.03 (  0%)      24 kB (  0%)
 LRA virtuals elimination           :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)      47 kB (  0%)
 reload                             :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 thread pro- & epilogue             :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)     273 kB (  0%)
 shorten branches                   :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 symout                             :   0.00 (  0%)   0.02 (  1%)   0.02 (  0%)       8 kB (  0%)
 initialize rtl                     :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)      12 kB (  0%)
 rest of compilation                :   0.03 (  1%)   0.01 (  1%)   0.03 (  0%)     420 kB (  0%)
 TOTAL                              :   5.36          1.83          7.47         400736 kB
[ 45%] Built target visitor_obj
[ 45%] Linking CXX static library libvisitor.a
[ 45%] Built target visitor
[ 52%] Built target codegen
[ 52%] Linking CXX executable ../../bin/units_lexer
[ 53%] Built target units_lexer
[ 54%] Linking CXX executable ../../bin/c_lexer
[ 54%] Built target c_lexer
[ 55%] Linking CXX executable ../../bin/nmodl_lexer
[ 55%] Built target nmodl_lexer
[ 57%] Built target printer_obj
[ 57%] Built target printer
[ 59%] Built target symtab_obj
[ 60%] Built target symtab
Scanning dependencies of target _nmodl
[ 60%] Building CXX object src/pybind/CMakeFiles/_nmodl.dir/pyast.cpp.o

Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)    1362 kB (  0%)
 phase parsing                      :   8.20 (  9%)   2.83 ( 12%)  12.12 ( 10%)  531143 kB (  9%)
 phase lang. deferred               :  36.68 ( 39%)  10.08 ( 41%)  48.25 ( 39%) 2917863 kB ( 48%)
 phase opt and generate             :  49.84 ( 52%)  11.54 ( 47%)  63.77 ( 51%) 2592137 kB ( 43%)
 phase last asm                     :   0.40 (  0%)   0.06 (  0%)   0.48 (  0%)    2588 kB (  0%)
 |name lookup                       :   5.59 (  6%)   3.05 ( 12%)   9.38 (  8%)   63869 kB (  1%)
 |overload resolution               :  16.38 ( 17%)   4.94 ( 20%)  21.74 ( 17%) 1149225 kB ( 19%)
 garbage collection                 :   7.33 (  8%)   0.32 (  1%)   7.88 (  6%)       0 kB (  0%)
 dump files                         :   3.05 (  3%)   2.22 (  9%)   5.05 (  4%)       0 kB (  0%)
 callgraph construction             :   2.73 (  3%)   0.69 (  3%)   3.78 (  3%)   92739 kB (  2%)
 callgraph optimization             :   1.64 (  2%)   0.54 (  2%)   2.21 (  2%)    1024 kB (  0%)
 ipa function summary               :   0.07 (  0%)   0.01 (  0%)   0.08 (  0%)       1 kB (  0%)
 ipa dead code removal              :   0.30 (  0%)   0.01 (  0%)   0.35 (  0%)       0 kB (  0%)
 ipa inheritance graph              :   0.03 (  0%)   0.01 (  0%)   0.03 (  0%)      39 kB (  0%)
 ipa inlining heuristics            :   0.49 (  1%)   0.07 (  0%)   0.68 (  1%)       0 kB (  0%)
 ipa various optimizations          :   0.15 (  0%)   0.01 (  0%)   0.23 (  0%)       0 kB (  0%)
 ipa free lang data                 :   0.07 (  0%)   0.00 (  0%)   0.07 (  0%)       0 kB (  0%)
 ipa free inline summary            :   0.13 (  0%)   0.00 (  0%)   0.16 (  0%)       0 kB (  0%)
 cfg construction                   :   0.32 (  0%)   0.12 (  0%)   0.33 (  0%)    8321 kB (  0%)
 cfg cleanup                        :   0.84 (  1%)   0.21 (  1%)   1.00 (  1%)     255 kB (  0%)
 trivially dead code                :   0.30 (  0%)   0.04 (  0%)   0.57 (  0%)       0 kB (  0%)
 df scan insns                      :   1.36 (  1%)   0.04 (  0%)   1.73 (  1%)    2270 kB (  0%)
 df live regs                       :   0.60 (  1%)   0.06 (  0%)   0.58 (  0%)       0 kB (  0%)
 df reg dead/unused notes           :   0.39 (  0%)   0.05 (  0%)   0.56 (  0%)   23232 kB (  0%)
 register information               :   0.25 (  0%)   0.08 (  0%)   0.28 (  0%)       0 kB (  0%)
 alias analysis                     :   0.32 (  0%)   0.02 (  0%)   0.37 (  0%)    8286 kB (  0%)
 rebuild jump labels                :   0.19 (  0%)   0.03 (  0%)   0.28 (  0%)       0 kB (  0%)
 preprocessing                      :   0.54 (  1%)   0.39 (  2%)   0.94 (  1%)   13124 kB (  0%)
 parser (global)                    :   0.89 (  1%)   0.41 (  2%)   1.36 (  1%)   60418 kB (  1%)
 parser struct body                 :   0.43 (  0%)   0.14 (  1%)   0.64 (  1%)   34225 kB (  1%)
 parser function body               :   0.44 (  0%)   0.11 (  0%)   0.58 (  0%)   25143 kB (  0%)
 parser inl. func. body             :   0.14 (  0%)   0.03 (  0%)   0.22 (  0%)    6547 kB (  0%)
 parser inl. meth. body             :   0.80 (  1%)   0.22 (  1%)   1.00 (  1%)   51979 kB (  1%)
 template instantiation             :  35.46 ( 37%)  10.79 ( 44%)  48.63 ( 39%) 3214163 kB ( 53%)
 constant expression evaluation     :   1.50 (  2%)   0.38 (  2%)   1.80 (  1%)   43285 kB (  1%)
 early inlining heuristics          :   0.06 (  0%)   0.07 (  0%)   0.06 (  0%)       0 kB (  0%)
 inline parameters                  :   0.28 (  0%)   0.04 (  0%)   0.41 (  0%)   45170 kB (  1%)
 integration                        :   0.03 (  0%)   0.04 (  0%)   0.02 (  0%)       0 kB (  0%)
 tree gimplify                      :   1.33 (  1%)   0.11 (  0%)   1.61 (  1%)  205763 kB (  3%)
 tree eh                            :   0.70 (  1%)   0.16 (  1%)   0.79 (  1%)   68250 kB (  1%)
 tree CFG construction              :   0.32 (  0%)   0.09 (  0%)   0.48 (  0%)   89911 kB (  1%)
 tree CFG cleanup                   :   0.86 (  1%)   0.18 (  1%)   1.05 (  1%)     189 kB (  0%)
 tree PHI insertion                 :   0.10 (  0%)   0.04 (  0%)   0.12 (  0%)    8679 kB (  0%)
 tree SSA rewrite                   :   0.26 (  0%)   0.08 (  0%)   0.22 (  0%)   38091 kB (  1%)
 tree SSA other                     :   0.73 (  1%)   0.34 (  1%)   1.13 (  1%)    6822 kB (  0%)
 tree SSA incremental               :   0.14 (  0%)   0.01 (  0%)   0.10 (  0%)       0 kB (  0%)
 tree operand scan                  :   0.36 (  0%)   0.29 (  1%)   0.83 (  1%)   83101 kB (  1%)
 tree switch lowering               :   0.15 (  0%)   0.03 (  0%)   0.20 (  0%)     162 kB (  0%)
 dominance frontiers                :   0.06 (  0%)   0.03 (  0%)   0.06 (  0%)       0 kB (  0%)
 dominance computation              :   1.05 (  1%)   0.08 (  0%)   1.20 (  1%)       0 kB (  0%)
 out of ssa                         :   0.62 (  1%)   0.10 (  0%)   0.75 (  1%)    5454 kB (  0%)
 expand vars                        :   0.31 (  0%)   0.05 (  0%)   0.37 (  0%)   23542 kB (  0%)
 expand                             :   2.28 (  2%)   0.25 (  1%)   2.86 (  2%)  265933 kB (  4%)
 post expand cleanups               :   0.39 (  0%)   0.12 (  0%)   0.49 (  0%)   33235 kB (  1%)
 varconst                           :   0.22 (  0%)   0.16 (  1%)   0.47 (  0%)       3 kB (  0%)
 jump                               :   0.31 (  0%)   0.18 (  1%)   0.50 (  0%)       0 kB (  0%)
 loop init                          :   0.28 (  0%)   0.19 (  1%)   0.38 (  0%)   36709 kB (  1%)
 loop fini                          :   0.14 (  0%)   0.06 (  0%)   0.19 (  0%)       0 kB (  0%)
 mode switching                     :   0.06 (  0%)   0.03 (  0%)   0.10 (  0%)       0 kB (  0%)
 integrated RA                      :   6.21 (  7%)   0.43 (  2%)   7.03 (  6%) 1188201 kB ( 20%)
 LRA non-specific                   :   2.73 (  3%)   0.30 (  1%)   3.32 (  3%)    9162 kB (  0%)
 LRA virtuals elimination           :   0.62 (  1%)   0.06 (  0%)   0.76 (  1%)   23744 kB (  0%)
 LRA reload inheritance             :   0.19 (  0%)   0.02 (  0%)   0.29 (  0%)       4 kB (  0%)
 LRA create live ranges             :   1.23 (  1%)   0.08 (  0%)   1.21 (  1%)    2350 kB (  0%)
 LRA hard reg assignment            :   0.32 (  0%)   0.06 (  0%)   0.44 (  0%)       0 kB (  0%)
 LRA coalesce pseudo regs           :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)       0 kB (  0%)
 reload                             :   0.33 (  0%)   0.15 (  1%)   0.43 (  0%)       0 kB (  0%)
 thread pro- & epilogue             :   1.32 (  1%)   0.17 (  1%)   1.49 (  1%)   82783 kB (  1%)
 machine dep reorg                  :   0.04 (  0%)   0.02 (  0%)   0.06 (  0%)       0 kB (  0%)
 shorten branches                   :   0.93 (  1%)   0.04 (  0%)   0.91 (  1%)      25 kB (  0%)
 reg stack                          :   0.09 (  0%)   0.04 (  0%)   0.13 (  0%)       0 kB (  0%)
 final                              :   3.35 (  4%)   0.63 (  3%)   4.08 (  3%)  107770 kB (  2%)
 variable output                    :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 symout                             :   0.66 (  1%)   0.21 (  1%)   0.71 (  1%)    2588 kB (  0%)
 initialize rtl                     :   0.07 (  0%)   0.00 (  0%)   0.06 (  0%)      12 kB (  0%)
 early local passes                 :   0.06 (  0%)   0.00 (  0%)   0.07 (  0%)       0 kB (  0%)
 rest of compilation                :   4.99 (  5%)   2.39 ( 10%)   7.52 (  6%)  130891 kB (  2%)
 unaccounted post reload            :   0.01 (  0%)   0.04 (  0%)   0.07 (  0%)       0 kB (  0%)
 unaccounted late compilation       :   0.03 (  0%)   0.03 (  0%)   0.03 (  0%)       0 kB (  0%)
 repair loop structures             :   0.13 (  0%)   0.11 (  0%)   0.22 (  0%)       0 kB (  0%)
 TOTAL                              :  95.12         24.51        124.63        6045105 kB
[ 61%] Building CXX object src/pybind/CMakeFiles/_nmodl.dir/pyvisitor.cpp.o

Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)    1362 kB (  0%)
 phase parsing                      :   7.21 ( 13%)   2.61 ( 17%)  10.35 ( 14%)  465314 kB ( 12%)
 phase lang. deferred               :  26.33 ( 46%)   6.93 ( 45%)  35.02 ( 46%) 1966985 kB ( 51%)
 phase opt and generate             :  23.73 ( 41%)   5.97 ( 38%)  30.53 ( 40%) 1385003 kB ( 36%)
 phase last asm                     :   0.20 (  0%)   0.03 (  0%)   0.23 (  0%)    1344 kB (  0%)
 |name lookup                       :   4.04 (  7%)   2.37 ( 15%)   6.61 (  9%)   43340 kB (  1%)
 |overload resolution               :  11.22 ( 20%)   3.39 ( 22%)  15.82 ( 21%)  791420 kB ( 21%)
 garbage collection                 :   4.28 (  7%)   0.19 (  1%)   4.61 (  6%)       0 kB (  0%)
 dump files                         :   1.53 (  3%)   1.19 (  8%)   2.92 (  4%)       0 kB (  0%)
 callgraph construction             :   1.50 (  3%)   0.27 (  2%)   1.75 (  2%)   58478 kB (  2%)
 callgraph optimization             :   0.76 (  1%)   0.29 (  2%)   1.12 (  1%)     512 kB (  0%)
 ipa function summary               :   0.04 (  0%)   0.00 (  0%)   0.04 (  0%)       1 kB (  0%)
 ipa dead code removal              :   0.16 (  0%)   0.00 (  0%)   0.17 (  0%)       0 kB (  0%)
 ipa inheritance graph              :   0.03 (  0%)   0.00 (  0%)   0.00 (  0%)      36 kB (  0%)
 ipa inlining heuristics            :   0.18 (  0%)   0.04 (  0%)   0.30 (  0%)       0 kB (  0%)
 ipa various optimizations          :   0.06 (  0%)   0.00 (  0%)   0.07 (  0%)       0 kB (  0%)
 ipa free lang data                 :   0.03 (  0%)   0.01 (  0%)   0.03 (  0%)       0 kB (  0%)
 ipa free inline summary            :   0.07 (  0%)   0.00 (  0%)   0.08 (  0%)       0 kB (  0%)
 cfg construction                   :   0.17 (  0%)   0.05 (  0%)   0.25 (  0%)    4617 kB (  0%)
 cfg cleanup                        :   0.38 (  1%)   0.09 (  1%)   0.36 (  0%)     159 kB (  0%)
 trivially dead code                :   0.22 (  0%)   0.05 (  0%)   0.20 (  0%)       0 kB (  0%)
 df scan insns                      :   0.76 (  1%)   0.04 (  0%)   0.74 (  1%)    1216 kB (  0%)
 df live regs                       :   0.29 (  1%)   0.03 (  0%)   0.40 (  1%)       0 kB (  0%)
 df reg dead/unused notes           :   0.29 (  1%)   0.01 (  0%)   0.27 (  0%)   11891 kB (  0%)
 register information               :   0.07 (  0%)   0.04 (  0%)   0.19 (  0%)       0 kB (  0%)
 alias analysis                     :   0.18 (  0%)   0.05 (  0%)   0.13 (  0%)    4416 kB (  0%)
 rebuild jump labels                :   0.13 (  0%)   0.07 (  0%)   0.10 (  0%)       0 kB (  0%)
 preprocessing                      :   0.61 (  1%)   0.34 (  2%)   1.09 (  1%)   21972 kB (  1%)
 parser (global)                    :   0.96 (  2%)   0.49 (  3%)   1.23 (  2%)   56411 kB (  1%)
 parser struct body                 :   0.45 (  1%)   0.13 (  1%)   0.56 (  1%)   39375 kB (  1%)
 parser enumerator list             :   0.02 (  0%)   0.00 (  0%)   0.01 (  0%)     129 kB (  0%)
 parser function body               :   0.31 (  1%)   0.11 (  1%)   0.53 (  1%)   12325 kB (  0%)
 parser inl. func. body             :   0.25 (  0%)   0.05 (  0%)   0.36 (  0%)   10111 kB (  0%)
 parser inl. meth. body             :   0.73 (  1%)   0.20 (  1%)   1.01 (  1%)   46077 kB (  1%)
 template instantiation             :  24.69 ( 43%)   7.59 ( 49%)  34.42 ( 45%) 2224482 kB ( 58%)
 constant expression evaluation     :   0.88 (  2%)   0.16 (  1%)   1.06 (  1%)   21410 kB (  1%)
 early inlining heuristics          :   0.02 (  0%)   0.02 (  0%)   0.02 (  0%)       3 kB (  0%)
 inline parameters                  :   0.19 (  0%)   0.03 (  0%)   0.16 (  0%)   24145 kB (  1%)
 integration                        :   0.02 (  0%)   0.02 (  0%)   0.06 (  0%)     193 kB (  0%)
 tree gimplify                      :   0.60 (  1%)   0.06 (  0%)   0.86 (  1%)  106132 kB (  3%)
 tree eh                            :   0.35 (  1%)   0.14 (  1%)   0.51 (  1%)   34210 kB (  1%)
 tree CFG construction              :   0.18 (  0%)   0.04 (  0%)   0.22 (  0%)   48003 kB (  1%)
 tree CFG cleanup                   :   0.41 (  1%)   0.04 (  0%)   0.53 (  1%)     149 kB (  0%)
 tree PHI insertion                 :   0.05 (  0%)   0.00 (  0%)   0.06 (  0%)    5236 kB (  0%)
 tree SSA rewrite                   :   0.10 (  0%)   0.03 (  0%)   0.09 (  0%)   19436 kB (  1%)
 tree SSA other                     :   0.51 (  1%)   0.16 (  1%)   0.50 (  1%)    3651 kB (  0%)
 tree SSA incremental               :   0.04 (  0%)   0.01 (  0%)   0.03 (  0%)      13 kB (  0%)
 tree operand scan                  :   0.17 (  0%)   0.15 (  1%)   0.51 (  1%)   43268 kB (  1%)
 tree switch lowering               :   0.06 (  0%)   0.01 (  0%)   0.08 (  0%)      84 kB (  0%)
 dominance frontiers                :   0.03 (  0%)   0.02 (  0%)   0.02 (  0%)       0 kB (  0%)
 dominance computation              :   0.47 (  1%)   0.11 (  1%)   0.65 (  1%)       0 kB (  0%)
 out of ssa                         :   0.34 (  1%)   0.00 (  0%)   0.31 (  0%)    2880 kB (  0%)
 expand vars                        :   0.12 (  0%)   0.03 (  0%)   0.23 (  0%)   12135 kB (  0%)
 expand                             :   1.25 (  2%)   0.16 (  1%)   1.35 (  2%)  138798 kB (  4%)
 post expand cleanups               :   0.28 (  0%)   0.07 (  0%)   0.24 (  0%)   16901 kB (  0%)
 varconst                           :   0.30 (  1%)   0.21 (  1%)   0.39 (  1%)       4 kB (  0%)
 jump                               :   0.13 (  0%)   0.04 (  0%)   0.22 (  0%)       0 kB (  0%)
 loop init                          :   0.20 (  0%)   0.04 (  0%)   0.28 (  0%)   20314 kB (  1%)
 loop fini                          :   0.04 (  0%)   0.03 (  0%)   0.13 (  0%)       0 kB (  0%)
 mode switching                     :   0.02 (  0%)   0.01 (  0%)   0.01 (  0%)       0 kB (  0%)
 integrated RA                      :   3.01 (  5%)   0.18 (  1%)   3.50 (  5%)  639545 kB ( 17%)
 LRA non-specific                   :   1.49 (  3%)   0.15 (  1%)   1.61 (  2%)    4581 kB (  0%)
 LRA virtuals elimination           :   0.42 (  1%)   0.09 (  1%)   0.33 (  0%)   11953 kB (  0%)
 LRA reload inheritance             :   0.10 (  0%)   0.03 (  0%)   0.14 (  0%)       2 kB (  0%)
 LRA create live ranges             :   0.39 (  1%)   0.05 (  0%)   0.30 (  0%)    1244 kB (  0%)
 LRA hard reg assignment            :   0.12 (  0%)   0.01 (  0%)   0.15 (  0%)       0 kB (  0%)
 reload                             :   0.30 (  1%)   0.07 (  0%)   0.32 (  0%)       0 kB (  0%)
 thread pro- & epilogue             :   0.59 (  1%)   0.04 (  0%)   0.79 (  1%)   44075 kB (  1%)
 machine dep reorg                  :   0.06 (  0%)   0.00 (  0%)   0.06 (  0%)       0 kB (  0%)
 shorten branches                   :   0.51 (  1%)   0.05 (  0%)   0.56 (  1%)      72 kB (  0%)
 reg stack                          :   0.02 (  0%)   0.03 (  0%)   0.05 (  0%)      17 kB (  0%)
 final                              :   1.60 (  3%)   0.34 (  2%)   2.15 (  3%)   57056 kB (  1%)
 variable output                    :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 symout                             :   0.28 (  0%)   0.10 (  1%)   0.35 (  0%)    1344 kB (  0%)
 initialize rtl                     :   0.00 (  0%)   0.00 (  0%)   0.04 (  0%)      12 kB (  0%)
 early local passes                 :   0.03 (  0%)   0.00 (  0%)   0.03 (  0%)       0 kB (  0%)
 rest of compilation                :   2.48 (  4%)   1.37 (  9%)   4.09 (  5%)   69548 kB (  2%)
 unaccounted post reload            :   0.04 (  0%)   0.03 (  0%)   0.01 (  0%)       0 kB (  0%)
 unaccounted late compilation       :   0.00 (  0%)   0.01 (  0%)   0.06 (  0%)       0 kB (  0%)
 repair loop structures             :   0.11 (  0%)   0.07 (  0%)   0.12 (  0%)       0 kB (  0%)
 TOTAL                              :  57.47         15.54         76.14        3820021 kB
[ 61%] Building CXX object src/pybind/CMakeFiles/_nmodl.dir/pysymtab.cpp.o

Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)    1362 kB (  0%)
 phase parsing                      :   5.24 ( 22%)   1.98 ( 29%)   7.40 ( 24%)  394273 kB ( 23%)
 phase lang. deferred               :   9.79 ( 42%)   2.76 ( 40%)  12.85 ( 41%)  813567 kB ( 48%)
 phase opt and generate             :   8.31 ( 35%)   2.14 ( 31%)  10.76 ( 35%)  486503 kB ( 29%)
 phase last asm                     :   0.08 (  0%)   0.01 (  0%)   0.09 (  0%)     483 kB (  0%)
 |name lookup                       :   1.93 (  8%)   1.27 ( 18%)   3.33 ( 11%)   24666 kB (  1%)
 |overload resolution               :   4.97 ( 21%)   1.52 ( 22%)   7.06 ( 23%)  383234 kB ( 23%)
 garbage collection                 :   1.17 (  5%)   0.04 (  1%)   1.24 (  4%)       0 kB (  0%)
 dump files                         :   0.60 (  3%)   0.40 (  6%)   1.15 (  4%)       0 kB (  0%)
 callgraph construction             :   0.65 (  3%)   0.08 (  1%)   0.73 (  2%)   16344 kB (  1%)
 callgraph optimization             :   0.29 (  1%)   0.14 (  2%)   0.47 (  2%)     256 kB (  0%)
 ipa function summary               :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)       1 kB (  0%)
 ipa dead code removal              :   0.05 (  0%)   0.00 (  0%)   0.06 (  0%)       0 kB (  0%)
 ipa inlining heuristics            :   0.12 (  1%)   0.00 (  0%)   0.05 (  0%)       0 kB (  0%)
 ipa various optimizations          :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 ipa free lang data                 :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 ipa free inline summary            :   0.02 (  0%)   0.00 (  0%)   0.02 (  0%)       0 kB (  0%)
 cfg construction                   :   0.05 (  0%)   0.00 (  0%)   0.08 (  0%)    1634 kB (  0%)
 cfg cleanup                        :   0.14 (  1%)   0.03 (  0%)   0.22 (  1%)      44 kB (  0%)
 trivially dead code                :   0.09 (  0%)   0.02 (  0%)   0.09 (  0%)       0 kB (  0%)
 df scan insns                      :   0.31 (  1%)   0.01 (  0%)   0.36 (  1%)     444 kB (  0%)
 df live regs                       :   0.09 (  0%)   0.01 (  0%)   0.14 (  0%)       0 kB (  0%)
 df reg dead/unused notes           :   0.09 (  0%)   0.01 (  0%)   0.09 (  0%)    3931 kB (  0%)
 register information               :   0.03 (  0%)   0.01 (  0%)   0.06 (  0%)       0 kB (  0%)
 alias analysis                     :   0.07 (  0%)   0.00 (  0%)   0.03 (  0%)    1501 kB (  0%)
 rebuild jump labels                :   0.04 (  0%)   0.03 (  0%)   0.03 (  0%)       0 kB (  0%)
 preprocessing                      :   0.48 (  2%)   0.24 (  3%)   0.79 (  3%)   12595 kB (  1%)
 parser (global)                    :   0.51 (  2%)   0.39 (  6%)   0.87 (  3%)   50578 kB (  3%)
 parser struct body                 :   0.53 (  2%)   0.10 (  1%)   0.50 (  2%)   33784 kB (  2%)
 parser enumerator list             :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)     114 kB (  0%)
 parser function body               :   0.17 (  1%)   0.08 (  1%)   0.26 (  1%)    5684 kB (  0%)
 parser inl. func. body             :   0.12 (  1%)   0.04 (  1%)   0.19 (  1%)   14847 kB (  1%)
 parser inl. meth. body             :   0.52 (  2%)   0.14 (  2%)   0.86 (  3%)   41316 kB (  2%)
 template instantiation             :  11.05 ( 47%)   3.48 ( 51%)  14.97 ( 48%) 1040227 kB ( 61%)
 constant expression evaluation     :   0.37 (  2%)   0.10 (  1%)   0.31 (  1%)    8690 kB (  1%)
 early inlining heuristics          :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 inline parameters                  :   0.07 (  0%)   0.00 (  0%)   0.05 (  0%)    8921 kB (  1%)
 integration                        :   0.01 (  0%)   0.00 (  0%)   0.02 (  0%)       0 kB (  0%)
 tree gimplify                      :   0.16 (  1%)   0.01 (  0%)   0.20 (  1%)   36341 kB (  2%)
 tree eh                            :   0.09 (  0%)   0.01 (  0%)   0.21 (  1%)   10720 kB (  1%)
 tree CFG construction              :   0.07 (  0%)   0.04 (  1%)   0.06 (  0%)   15917 kB (  1%)
 tree CFG cleanup                   :   0.14 (  1%)   0.06 (  1%)   0.17 (  1%)      11 kB (  0%)
 tree PHI insertion                 :   0.00 (  0%)   0.01 (  0%)   0.05 (  0%)    1436 kB (  0%)
 tree SSA rewrite                   :   0.01 (  0%)   0.00 (  0%)   0.06 (  0%)    6670 kB (  0%)
 tree SSA other                     :   0.16 (  1%)   0.06 (  1%)   0.20 (  1%)    1333 kB (  0%)
 tree SSA incremental               :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 tree operand scan                  :   0.07 (  0%)   0.04 (  1%)   0.09 (  0%)   15161 kB (  1%)
 tree switch lowering               :   0.01 (  0%)   0.01 (  0%)   0.04 (  0%)      13 kB (  0%)
 dominance frontiers                :   0.02 (  0%)   0.02 (  0%)   0.00 (  0%)       0 kB (  0%)
 dominance computation              :   0.17 (  1%)   0.03 (  0%)   0.22 (  1%)       0 kB (  0%)
 out of ssa                         :   0.08 (  0%)   0.03 (  0%)   0.14 (  0%)    1052 kB (  0%)
 expand vars                        :   0.04 (  0%)   0.02 (  0%)   0.08 (  0%)    3654 kB (  0%)
 expand                             :   0.49 (  2%)   0.05 (  1%)   0.53 (  2%)   48121 kB (  3%)
 post expand cleanups               :   0.16 (  1%)   0.01 (  0%)   0.10 (  0%)    6086 kB (  0%)
 varconst                           :   0.08 (  0%)   0.11 (  2%)   0.23 (  1%)       2 kB (  0%)
 jump                               :   0.01 (  0%)   0.01 (  0%)   0.09 (  0%)       0 kB (  0%)
 loop init                          :   0.05 (  0%)   0.02 (  0%)   0.13 (  0%)    7222 kB (  0%)
 loop fini                          :   0.03 (  0%)   0.01 (  0%)   0.04 (  0%)       0 kB (  0%)
 mode switching                     :   0.03 (  0%)   0.01 (  0%)   0.00 (  0%)       0 kB (  0%)
 integrated RA                      :   1.02 (  4%)   0.12 (  2%)   1.22 (  4%)  232742 kB ( 14%)
 LRA non-specific                   :   0.42 (  2%)   0.09 (  1%)   0.55 (  2%)    1639 kB (  0%)
 LRA virtuals elimination           :   0.10 (  0%)   0.02 (  0%)   0.15 (  0%)    4029 kB (  0%)
 LRA reload inheritance             :   0.02 (  0%)   0.00 (  0%)   0.00 (  0%)       1 kB (  0%)
 LRA create live ranges             :   0.10 (  0%)   0.00 (  0%)   0.20 (  1%)     415 kB (  0%)
 LRA hard reg assignment            :   0.06 (  0%)   0.01 (  0%)   0.08 (  0%)       0 kB (  0%)
 reload                             :   0.07 (  0%)   0.01 (  0%)   0.08 (  0%)       0 kB (  0%)
 thread pro- & epilogue             :   0.24 (  1%)   0.02 (  0%)   0.16 (  1%)   15910 kB (  1%)
 machine dep reorg                  :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 shorten branches                   :   0.23 (  1%)   0.00 (  0%)   0.13 (  0%)       2 kB (  0%)
 reg stack                          :   0.00 (  0%)   0.01 (  0%)   0.04 (  0%)       0 kB (  0%)
 final                              :   0.55 (  2%)   0.07 (  1%)   0.61 (  2%)   20063 kB (  1%)
 symout                             :   0.13 (  1%)   0.04 (  1%)   0.11 (  0%)     483 kB (  0%)
 initialize rtl                     :   0.01 (  0%)   0.00 (  0%)   0.02 (  0%)      12 kB (  0%)
 early local passes                 :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 rest of compilation                :   0.89 (  4%)   0.55 (  8%)   1.33 (  4%)   24836 kB (  1%)
 unaccounted late compilation       :   0.01 (  0%)   0.01 (  0%)   0.00 (  0%)       0 kB (  0%)
 repair loop structures             :   0.01 (  0%)   0.03 (  0%)   0.06 (  0%)       0 kB (  0%)
 TOTAL                              :  23.42          6.89         31.11        1696200 kB
[ 62%] Linking CXX shared module ../../lib/python/nmodl/_nmodl.cpython-36m-darwin.so
[ 63%] Built target _nmodl
[ 64%] Linking CXX executable ../../bin/nmodl
[ 65%] Built target nmodl
[ 66%] Linking CXX executable ../../bin/units_parser
[ 67%] Built target units_parser
[ 68%] Linking CXX executable ../../bin/nmodl_parser
[ 68%] Built target nmodl_parser
[ 68%] Linking CXX executable ../../bin/c_parser
[ 69%] Built target c_parser
[ 69%] Linking CXX executable ../../bin/nmodl_visitor
[ 70%] Built target nmodl_visitor
[ 71%] -- COPYING NMODL PYTHON FILES --
[ 71%] Built target copy_python_files
[ 72%] Linking CXX executable ../bin/testlexer
[ 73%] Built target testlexer
[ 75%] Linking CXX executable ../bin/testunitlexer
[ 76%] Built target testunitlexer
[ 77%] Built target testnewton
[ 78%] Built target test_util
[ 79%] Built target config
[ 80%] Linking CXX executable ../bin/testunitparser
[ 80%] Built target testunitparser
[ 80%] Linking CXX executable ../bin/testsymtab
[ 81%] Built target testsymtab
[ 82%] Built target testprinter
[ 83%] Linking CXX executable ../bin/testparser
[ 84%] Built target testparser
[ 85%] Linking CXX executable ../bin/testvisitor
[ 98%] Built target testvisitor
[100%] Linking CXX executable ../bin/testmodtoken
[100%] Built target testmodtoken
cattabiani commented 4 years ago

nmodl_visitor was tacking a lot of time when I was running on bb5. However, I did not check performances, it is just a qualitative hint

pramodk commented 4 years ago

nmodl_visitor was tacking a lot of time when I was running on bb5.

@cattabiani : I assume you were also using make -j ? See my latest update above for GCC compiler where pybind11 + ast visitor takes huge time compare to anything else.

cattabiani commented 4 years ago

could it be related to ast_common, moved to jinja template? (Just a shot in the dark)

pramodk commented 4 years ago

Some of the experiments:

Effect of unwanted include on compilation time

Let's assume we are going to introduce large ast.hpp header into file where we are not going to use it:

→ git diff
diff --git a/src/lexer/modtoken.cpp b/src/lexer/modtoken.cpp
index 8be6a38d..0d67ca9c 100644
--- a/src/lexer/modtoken.cpp
+++ b/src/lexer/modtoken.cpp
@@ -6,6 +6,7 @@
  *************************************************************************/

 #include "lexer/modtoken.hpp"
+#include "ast/ast.hpp"

 namespace nmodl {
# Clang
[  1%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/modtoken.cpp.o
===-------------------------------------------------------------------------===
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0216 ( 54.9%)   0.0021 ( 48.3%)   0.0237 ( 54.2%)   0.0242 ( 54.1%)  Code Generation Time
   0.0177 ( 45.1%)   0.0023 ( 51.7%)   0.0200 ( 45.8%)   0.0205 ( 45.9%)  LLVM IR Generation Time
   0.0393 (100.0%)   0.0044 (100.0%)   0.0437 (100.0%)   0.0447 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 0.3854 seconds (0.3964 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.3420 (100.0%)   0.0434 (100.0%)   0.3854 (100.0%)   0.3964 (100.0%)  Clang front-end timer
   0.3420 (100.0%)   0.0434 (100.0%)   0.3854 (100.0%)   0.3964 (100.0%)  Total

# GCC
[  1%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/modtoken.cpp.o

Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  1%)    1362 kB (  3%)
 phase parsing                      :   0.71 ( 92%)   0.33 ( 94%)   1.08 ( 92%)   44555 kB ( 89%)
 phase lang. deferred               :   0.03 (  4%)   0.01 (  3%)   0.05 (  4%)    3045 kB (  6%)
 phase opt and generate             :   0.03 (  4%)   0.00 (  0%)   0.03 (  3%)     951 kB (  2%)
 phase finalize                     :   0.00 (  0%)   0.01 (  3%)   0.00 (  0%)       0 kB (  0%)
 |name lookup                       :   0.09 ( 12%)   0.06 ( 17%)   0.18 ( 15%)    1747 kB (  3%)
 |overload resolution               :   0.03 (  4%)   0.00 (  0%)   0.07 (  6%)    2081 kB (  4%)
 callgraph construction             :   0.01 (  1%)   0.00 (  0%)   0.00 (  0%)     116 kB (  0%)
 callgraph optimization             :   0.00 (  0%)   0.00 (  0%)   0.01 (  1%)       0 kB (  0%)
 df scan insns                      :   0.00 (  0%)   0.00 (  0%)   0.01 (  1%)       0 kB (  0%)
 preprocessing                      :   0.16 ( 21%)   0.13 ( 37%)   0.25 ( 21%)    9541 kB ( 19%)
 parser (global)                    :   0.11 ( 14%)   0.05 ( 14%)   0.26 ( 22%)   12508 kB ( 25%)
 parser struct body                 :   0.11 ( 14%)   0.02 (  6%)   0.16 ( 14%)    7406 kB ( 15%)
 parser function body               :   0.05 (  6%)   0.03 (  9%)   0.11 (  9%)    1671 kB (  3%)
 parser inl. func. body             :   0.03 (  4%)   0.01 (  3%)   0.06 (  5%)    1150 kB (  2%)
 parser inl. meth. body             :   0.07 (  9%)   0.03 (  9%)   0.07 (  6%)    3599 kB (  7%)
 template instantiation             :   0.17 ( 22%)   0.07 ( 20%)   0.22 ( 19%)   11662 kB ( 23%)
 constant expression evaluation     :   0.02 (  3%)   0.00 (  0%)   0.00 (  0%)      11 kB (  0%)
 varconst                           :   0.02 (  3%)   0.00 (  0%)   0.00 (  0%)       0 kB (  0%)
 integrated RA                      :   0.01 (  1%)   0.00 (  0%)   0.01 (  1%)     366 kB (  1%)
 LRA non-specific                   :   0.01 (  1%)   0.00 (  0%)   0.00 (  0%)       2 kB (  0%)
 TOTAL                              :   0.77          0.35          1.17          49925 kB
#Clang
[  1%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/modtoken.cpp.o
===-------------------------------------------------------------------------===
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0706 ( 68.9%)   0.0080 ( 62.9%)   0.0785 ( 68.2%)   0.0861 ( 68.2%)  LLVM IR Generation Time
   0.0319 ( 31.1%)   0.0047 ( 37.1%)   0.0366 ( 31.8%)   0.0402 ( 31.8%)  Code Generation Time
   0.1024 (100.0%)   0.0127 (100.0%)   0.1151 (100.0%)   0.1262 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 1.2367 seconds (1.3020 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   1.1252 (100.0%)   0.1116 (100.0%)   1.2367 (100.0%)   1.3020 (100.0%)  Clang front-end timer
   1.1252 (100.0%)   0.1116 (100.0%)   1.2367 (100.0%)   1.3020 (100.0%)  Total

# GCC
[  1%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/modtoken.cpp.o

Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)    1362 kB (  0%)
 phase parsing                      :   3.88 ( 67%)   1.39 ( 74%)   5.62 ( 69%)  267707 kB ( 68%)
 phase lang. deferred               :   1.81 ( 31%)   0.48 ( 25%)   2.39 ( 29%)  120584 kB ( 31%)
 phase opt and generate             :   0.09 (  2%)   0.02 (  1%)   0.11 (  1%)    5027 kB (  1%)
 |name lookup                       :   0.80 ( 14%)   0.41 ( 22%)   1.20 ( 15%)    8617 kB (  2%)
 |overload resolution               :   1.82 ( 31%)   0.57 ( 30%)   2.39 ( 29%)  120373 kB ( 30%)
 garbage collection                 :   0.24 (  4%)   0.01 (  1%)   0.26 (  3%)       0 kB (  0%)
 callgraph construction             :   0.03 (  1%)   0.00 (  0%)   0.04 (  0%)    2212 kB (  1%)
 ipa inheritance graph              :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)      14 kB (  0%)
 df scan insns                      :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)       1 kB (  0%)
 df live regs                       :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 preprocessing                      :   0.22 (  4%)   0.18 ( 10%)   0.54 (  7%)   10105 kB (  3%)
 parser (global)                    :   0.36 (  6%)   0.18 ( 10%)   0.50 (  6%)   24185 kB (  6%)
 parser struct body                 :   0.31 (  5%)   0.07 (  4%)   0.37 (  5%)   24220 kB (  6%)
 parser enumerator list             :   0.00 (  0%)   0.01 (  1%)   0.00 (  0%)      96 kB (  0%)
 parser function body               :   0.04 (  1%)   0.05 (  3%)   0.13 (  2%)    2651 kB (  1%)
 parser inl. func. body             :   0.05 (  1%)   0.03 (  2%)   0.10 (  1%)    2187 kB (  1%)
 parser inl. meth. body             :   0.30 (  5%)   0.08 (  4%)   0.43 (  5%)   24033 kB (  6%)
 template instantiation             :   4.00 ( 69%)   1.22 ( 65%)   5.47 ( 67%)  300779 kB ( 76%)
 constant expression evaluation     :   0.11 (  2%)   0.02 (  1%)   0.09 (  1%)      30 kB (  0%)
 tree gimplify                      :   0.00 (  0%)   0.01 (  1%)   0.01 (  0%)     275 kB (  0%)
 tree eh                            :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)     116 kB (  0%)
 tree SSA other                     :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)       5 kB (  0%)
 dominance computation              :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)       0 kB (  0%)
 varconst                           :   0.03 (  1%)   0.02 (  1%)   0.10 (  1%)       1 kB (  0%)
 integrated RA                      :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)    1070 kB (  0%)
 LRA non-specific                   :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)       6 kB (  0%)
 thread pro- & epilogue             :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)      70 kB (  0%)
 symout                             :   0.03 (  1%)   0.00 (  0%)   0.02 (  0%)       2 kB (  0%)
 initialize rtl                     :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)      12 kB (  0%)
 rest of compilation                :   0.01 (  0%)   0.01 (  1%)   0.00 (  0%)     122 kB (  0%)
 TOTAL                              :   5.78          1.89          8.13         394693 kB
# GCC
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0390 ( 60.8%)   0.0047 ( 64.6%)   0.0437 ( 61.1%)   0.0454 ( 61.5%)  LLVM IR Generation Time
   0.0252 ( 39.2%)   0.0026 ( 35.4%)   0.0278 ( 38.9%)   0.0284 ( 38.5%)  Code Generation Time
   0.0642 (100.0%)   0.0073 (100.0%)   0.0715 (100.0%)   0.0737 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 0.8252 seconds (0.8485 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.7439 (100.0%)   0.0813 (100.0%)   0.8252 (100.0%)   0.8485 (100.0%)  Clang front-end timer
   0.7439 (100.0%)   0.0813 (100.0%)   0.8252 (100.0%)   0.8485 (100.0%)  Total

# Clang
Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)    1362 kB (  1%)
 phase parsing                      :   2.17 ( 72%)   0.89 ( 77%)   3.14 ( 73%)  170309 kB ( 71%)
 phase lang. deferred               :   0.77 ( 25%)   0.25 ( 22%)   1.04 ( 24%)   64215 kB ( 27%)
 phase opt and generate             :   0.07 (  2%)   0.01 (  1%)   0.09 (  2%)    4043 kB (  2%)
 phase finalize                     :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)       0 kB (  0%)
 |name lookup                       :   0.48 ( 16%)   0.27 ( 23%)   0.65 ( 15%)    5853 kB (  2%)
 |overload resolution               :   0.92 ( 30%)   0.36 ( 31%)   1.09 ( 25%)   65270 kB ( 27%)
 callgraph construction             :   0.03 (  1%)   0.00 (  0%)   0.04 (  1%)    1231 kB (  1%)
 callgraph optimization             :   0.00 (  0%)   0.01 (  1%)   0.00 (  0%)       1 kB (  0%)
 cfg cleanup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 df scan insns                      :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       1 kB (  0%)
 preprocessing                      :   0.24 (  8%)   0.15 ( 13%)   0.39 (  9%)   10118 kB (  4%)
 parser (global)                    :   0.28 (  9%)   0.16 ( 14%)   0.48 ( 11%)   24079 kB ( 10%)
 parser struct body                 :   0.19 (  6%)   0.05 (  4%)   0.24 (  6%)   17798 kB (  7%)
 parser enumerator list             :   0.00 (  0%)   0.01 (  1%)   0.00 (  0%)      96 kB (  0%)
 parser function body               :   0.10 (  3%)   0.03 (  3%)   0.08 (  2%)    2523 kB (  1%)
 parser inl. func. body             :   0.02 (  1%)   0.03 (  3%)   0.09 (  2%)    2187 kB (  1%)
 parser inl. meth. body             :   0.24 (  8%)   0.09 (  8%)   0.35 (  8%)   15924 kB (  7%)
 template instantiation             :   1.81 ( 60%)   0.60 ( 52%)   2.44 ( 57%)  161771 kB ( 67%)
 constant expression evaluation     :   0.01 (  0%)   0.01 (  1%)   0.02 (  0%)      23 kB (  0%)
 tree CFG cleanup                   :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)       0 kB (  0%)
 varconst                           :   0.04 (  1%)   0.01 (  1%)   0.07 (  2%)       1 kB (  0%)
 integrated RA                      :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)    1070 kB (  0%)
 thread pro- & epilogue             :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)      70 kB (  0%)
 symout                             :   0.01 (  0%)   0.00 (  0%)   0.02 (  0%)       2 kB (  0%)
 initialize rtl                     :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)      12 kB (  0%)
 unaccounted post reload            :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)       0 kB (  0%)
 TOTAL                              :   3.02          1.15          4.28         239942 kB
[ 20%] Built target lexer_obj
[ 22%] Built target fmt

Conclusion: As expected, parsing of headers increase compilation time (significantly).

Effect of pre-compiled headers

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++   -I/usr/local/opt/flex/include -I/Users/kumbhar/workarena/repos/bbp/incubator/nocmodl -I/Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/src -I/Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/build/src -I/Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext -I/Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/fmt/include -I/Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/spdlog/include -I/Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/cli11/include  -ftime-report -fPIC -fvisibility=hidden   -std=c++11 -o CMakeFiles/lexer_obj.dir/modtoken.cpp.o -c /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/src/lexer/modtoken.cpp
===-------------------------------------------------------------------------===
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0219 ( 55.2%)   0.0042 ( 65.8%)   0.0261 ( 56.7%)   0.0285 ( 58.1%)  Code Generation Time
   0.0177 ( 44.8%)   0.0022 ( 34.2%)   0.0199 ( 43.3%)   0.0206 ( 41.9%)  LLVM IR Generation Time
   0.0396 (100.0%)   0.0064 (100.0%)   0.0460 (100.0%)   0.0491 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 0.3955 seconds (0.4091 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.3498 (100.0%)   0.0457 (100.0%)   0.3955 (100.0%)   0.4091 (100.0%)  Clang front-end timer
   0.3498 (100.0%)   0.0457 (100.0%)   0.3955 (100.0%)   0.4091 (100.0%)  Total

Let's create pre-compiled header:

"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.14.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-pch -disable-free -disable-llvm-verifier -discard-value-names -main-file-name ast.hpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 450.3 -v -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1 -I /usr/local/opt/flex/include -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/src -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/build/src -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/fmt/include -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/spdlog/include -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/cli11/include -stdlib=libc++ -Wno-atomic-implicit-seq-cst -Wno-framework-include-private-from-public -Wno-atimport-in-framework-header -Wno-quoted-include-in-framework-header -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/build/src/lexer -ferror-limit 19 -fmessage-length 229 -fvisibility hidden -ftime-report -stack-protector 1 -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fobjc-runtime=macosx-10.14.0 -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -std=c++11  
../../src/ast/ast.hpp -emit-pch -o ast.hpp.pch
→ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -include-pch ast.hpp.pch -triple x86_64-apple-macosx10.14.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name modtoken.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 450.3 -v -coverage-notes-file /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/build/src/lexer/CMakeFiles/lexer_obj.dir/modtoken.cpp.gcno -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1 -I /usr/local/opt/flex/include -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/src -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/build/src -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/fmt/include -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/spdlog/include -I /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/cli11/include -stdlib=libc++ -Wno-atomic-implicit-seq-cst -Wno-framework-include-private-from-public -Wno-atimport-in-framework-header -Wno-quoted-include-in-framework-header -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/build/src/lexer -ferror-limit 19 -fmessage-length 229 -fvisibility hidden -ftime-report -stack-protector 1 -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fobjc-runtime=macosx-10.14.0 -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o CMakeFiles/lexer_obj.dir/modtoken.cpp.o -x c++ /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/src/lexer/modtoken.cpp
clang -cc1 version 10.0.1 (clang-1001.0.46.4) default target x86_64-apple-darwin18.6.0
ignoring nonexistent directory "/usr/include/c++/v1"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/opt/flex/include
 /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl
 /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/src
 /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/build/src
 /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext
 /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/fmt/include
 /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/spdlog/include
 /Users/kumbhar/workarena/repos/bbp/incubator/nocmodl/ext/cli11/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
===-------------------------------------------------------------------------===
                         Miscellaneous Ungrouped Timers
===-------------------------------------------------------------------------===

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0651 ( 72.0%)   0.0070 ( 74.9%)   0.0721 ( 72.3%)   0.0743 ( 72.4%)  LLVM IR Generation Time
   0.0253 ( 28.0%)   0.0024 ( 25.1%)   0.0276 ( 27.7%)   0.0283 ( 27.6%)  Code Generation Time
   0.0903 (100.0%)   0.0094 (100.0%)   0.0997 (100.0%)   0.1026 (100.0%)  Total

===-------------------------------------------------------------------------===
                          Clang front-end time report
===-------------------------------------------------------------------------===
  Total Execution Time: 0.7089 seconds (0.7288 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.6432 (100.0%)   0.0657 (100.0%)   0.7089 (100.0%)   0.7288 (100.0%)  Clang front-end timer
   0.6432 (100.0%)   0.0657 (100.0%)   0.7089 (100.0%)   0.7288 (100.0%)  Total

Conclusion : it's still 2x slower with Clang for obvious reasons

pramodk commented 4 years ago

In summary

gabime commented 4 years ago

I strongly recommend using spdlog as complied lib instead of using the header only version. This reduces significantly build times of modules that include spdlog

pramodk commented 4 years ago

@gabime : thank you very much for suggestion. I didn't pay too much attention if spdlog is causing the issue here. But I will definitely have a look!

gabime commented 4 years ago

@pramodk See https://github.com/gabime/spdlog/blob/v1.x/example/CMakeLists.txt on how to use the compiled version with cmake.

mgeplf commented 4 years ago

Not to add noise, but using -ftime-trace and using the google chrome profile visualizer is quite nice: Screenshot 2020-04-17 at 09 25 34

alkino commented 3 years ago

I use a tool called ts that add the time in front of each line. After I use make -j1. The time is the time to print the line.

00:00:00 [ 0%] Building CXX object test/unit/CMakeFiles/test_util.dir/utils/nmodl_constructs.cpp.o 00:00:00 [ 1%] Building CXX object test/unit/CMakeFiles/test_util.dir/utils/test_utils.cpp.o 00:00:07 [ 2%] Linking CXX static library libtest_util.a 00:00:00 [ 2%] Built target test_util 00:00:00 [ 3%] Building CXX object src/pybind/CMakeFiles/pyembed.dir/pyembed.cpp.o 00:00:08 [ 3%] Linking CXX static library libpyembed.a 00:00:01 [ 3%] Built target pyembed 00:00:00 [ 3%] Building CXX object ext/fmt/CMakeFiles/fmt.dir/src/format.cc.o 00:00:02 [ 4%] Building CXX object ext/fmt/CMakeFiles/fmt.dir/src/os.cc.o 00:00:01 [ 4%] Linking CXX static library libfmt.a 00:00:00 [ 4%] Built target fmt 00:00:00 [ 5%] Building CXX object src/pybind/CMakeFiles/pywrapper.dir/wrapper.cpp.o 00:00:04 [ 5%] Linking CXX static library libpywrapper.a 00:00:00 [ 5%] Built target pywrapper 00:00:00 [ 5%] -- NMODL : GENERATING AST CLASSES WITH PYTHON GENERATOR! -- 00:00:09 [ 5%] Built target pyastgen 00:00:00 [ 6%] -- NMODL : GENERATING VERBATIM PARSER WITH BISON! -- 00:00:00 [ 6%] -- NMODL : GENERATING C(11) LEXER WITH FLEX! -- 00:00:00 [ 7%] -- NMODL : GENERATING DIFFERENTIAL EQUATION LEXER WITH FLEX! -- 00:00:00 [ 7%] -- NMODL : GENERATING NMODL LEXER WITH FLEX! -- 00:00:00 [ 8%] -- NMODL : GENERATING UNIT LEXER WITH FLEX! -- 00:00:00 [ 9%] -- NMODL : GENERATING VERBATIM LEXER WITH FLEX! -- 00:00:00 [ 9%] -- NMODL : GENERATING C (11) PARSER WITH BISON! -- 00:00:00 [ 10%] -- NMODL : GENERATING DIFFERENTIAL EQUATION PARSER WITH BISON! -- 00:00:00 [ 10%] -- NMODL : GENERATING NMODL_CORE PARSER WITH BISON! -- 00:00:02 [ 11%] -- NMODL : GENERATING UNIT PARSER WITH BISON! -- 00:00:00 [ 11%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/token_mapping.cpp.o 00:00:12 [ 12%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/nmodl_utils.cpp.o 00:00:12 [ 13%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/modtoken.cpp.o 00:00:00 [ 13%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/nmodl_base_lexer.cpp.o 00:00:12 [ 14%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/verbatim_lexer.cpp.o 00:00:01 [ 14%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/diffeq_base_lexer.cpp.o 00:00:00 [ 15%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/c11_base_lexer.cpp.o 00:00:08 [ 15%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/unit_base_lexer.cpp.o 00:00:07 [ 16%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//parser/nmodl_driver.cpp.o 00:00:12 [ 17%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//parser/diffeq_driver.cpp.o 00:00:07 [ 17%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//parser/diffeq_context.cpp.o 00:00:07 [ 18%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//parser/c11_driver.cpp.o 00:00:01 [ 18%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//parser/unit_driver.cpp.o 00:00:01 [ 19%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//parser/nmodl/nmodl_parser.cpp.o 00:00:17 [ 20%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//parser/verbatim_parser.cpp.o 00:00:01 [ 20%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//parser/diffeq/diffeq_parser.cpp.o 00:00:00 [ 21%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//parser/c/c11_parser.cpp.o 00:00:01 [ 21%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//parser/unit/unit_parser.cpp.o 00:00:01 [ 22%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir//ast/ast.cpp.o 00:00:21 [ 23%] Building CXX object src/lexer/CMakeFiles/lexer_obj.dir/__/units/units.cpp.o 00:00:01 [ 23%] Built target lexer_obj 00:00:00 [ 24%] Linking CXX static library liblexer.a 00:00:02 [ 24%] Built target lexer 00:00:00 [ 25%] Building CXX object src/utils/CMakeFiles/util_obj.dir/common_utils.cpp.o 00:00:01 [ 26%] Building CXX object src/utils/CMakeFiles/util_obj.dir/file_library.cpp.o 00:00:07 [ 26%] Building CXX object src/utils/CMakeFiles/util_obj.dir/logger.cpp.o 00:00:08 [ 27%] Building CXX object src/utils/CMakeFiles/util_obj.dir/perf_stat.cpp.o 00:00:07 [ 27%] Building CXX object src/utils/CMakeFiles/util_obj.dir/table_data.cpp.o 00:00:08 [ 28%] Building CXX object src/utils/CMakeFiles/util_obj.dir//config/config.cpp.o 00:00:01 [ 28%] Built target util_obj 00:00:00 [ 28%] Linking CXX static library libutil.a 00:00:00 [ 28%] Built target util 00:00:00 [ 29%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/neuron_solve_visitor.cpp.o 00:00:11 [ 30%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/constant_folder_visitor.cpp.o 00:00:11 [ 30%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/after_cvode_to_cnexp_visitor.cpp.o 00:00:08 [ 31%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/defuse_analyze_visitor.cpp.o 00:00:12 [ 31%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/global_var_visitor.cpp.o 00:00:08 [ 32%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/inline_visitor.cpp.o 00:00:15 [ 34%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/kinetic_block_visitor.cpp.o 00:00:12 [ 34%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/local_to_assigned_visitor.cpp.o 00:00:08 [ 35%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/local_var_rename_visitor.cpp.o 00:00:09 [ 35%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/localize_visitor.cpp.o 00:00:13 [ 36%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/loop_unroll_visitor.cpp.o 00:00:11 [ 37%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/solve_block_visitor.cpp.o 00:00:11 [ 37%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/perf_visitor.cpp.o 00:00:12 [ 38%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/rename_visitor.cpp.o 00:00:14 [ 38%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/steadystate_visitor.cpp.o 00:00:11 [ 39%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/sympy_conductance_visitor.cpp.o 00:00:15 [ 39%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/sympy_solver_visitor.cpp.o 00:00:14 [ 40%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/sympy_replace_solutions_visitor.cpp.o 00:00:13 [ 41%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/units_visitor.cpp.o 00:00:11 [ 41%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/var_usage_visitor.cpp.o 00:00:07 [ 42%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/verbatim_var_rename_visitor.cpp.o 00:00:08 [ 42%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/verbatim_visitor.cpp.o 00:00:07 [ 43%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/visitor_utils.cpp.o 00:00:13 [ 44%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/ast_visitor.cpp.o 00:00:10 [ 44%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/checkparent_visitor.cpp.o 00:00:11 [ 45%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/json_visitor.cpp.o 00:00:12 [ 45%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/lookup_visitor.cpp.o 00:00:13 [ 46%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/nmodl_visitor.cpp.o 00:00:12 [ 47%] Building CXX object src/visitors/CMakeFiles/visitor_obj.dir/symtab_visitor.cpp.o 00:00:13 [ 47%] Built target visitor_obj 00:00:00 [ 47%] Linking CXX static library libvisitor.a 00:00:05 [ 47%] Built target visitor 00:00:00 [ 47%] Building CXX object src/codegen/CMakeFiles/codegen.dir/codegen_acc_visitor.cpp.o 00:00:07 [ 48%] Building CXX object src/codegen/CMakeFiles/codegen.dir/codegen_compatibility_visitor.cpp.o 00:00:13 [ 49%] Building CXX object src/codegen/CMakeFiles/codegen.dir/codegen_cuda_visitor.cpp.o 00:00:07 [ 49%] Building CXX object src/codegen/CMakeFiles/codegen.dir/codegen_omp_visitor.cpp.o 00:00:08 [ 50%] Building CXX object src/codegen/CMakeFiles/codegen.dir/codegen_c_visitor.cpp.o 00:00:18 [ 50%] Building CXX object src/codegen/CMakeFiles/codegen.dir/codegen_helper_visitor.cpp.o 00:00:12 [ 51%] Building CXX object src/codegen/CMakeFiles/codegen.dir/codegen_info.cpp.o 00:00:11 [ 52%] Building CXX object src/codegen/CMakeFiles/codegen.dir/codegen_ispc_visitor.cpp.o 00:00:14 [ 52%] Building CXX object src/codegen/CMakeFiles/codegen.dir/codegen_utils.cpp.o 00:00:07 [ 53%] Linking CXX static library libcodegen.a 00:00:02 [ 53%] Built target codegen 00:00:00 [ 53%] Building CXX object src/printer/CMakeFiles/printer_obj.dir/json_printer.cpp.o 00:00:09 [ 54%] Building CXX object src/printer/CMakeFiles/printer_obj.dir/nmodl_printer.cpp.o 00:00:07 [ 55%] Building CXX object src/printer/CMakeFiles/printer_obj.dir/code_printer.cpp.o 00:00:07 [ 55%] Built target printer_obj 00:00:00 [ 56%] Linking CXX static library libprinter.a 00:00:00 [ 56%] Built target printer 00:00:00 [ 57%] Building CXX object src/symtab/CMakeFiles/symtab_obj.dir/symbol.cpp.o 00:00:07 [ 57%] Building CXX object src/symtab/CMakeFiles/symtab_obj.dir/symbol_properties.cpp.o 00:00:08 [ 58%] Building CXX object src/symtab/CMakeFiles/symtab_obj.dir/symbol_table.cpp.o 00:00:08 [ 58%] Built target symtab_obj 00:00:00 [ 59%] Linking CXX static library libsymtab.a 00:00:00 [ 59%] Built target symtab 00:00:00 [ 59%] Building CXX object test/unit/CMakeFiles/testcodegen.dir/codegen/main.cpp.o 00:00:16 [ 60%] Building CXX object test/unit/CMakeFiles/testcodegen.dir/codegen/codegen_ispc.cpp.o 00:00:10 [ 60%] Building CXX object test/unit/CMakeFiles/testcodegen.dir/codegen/codegen_helper.cpp.o 00:00:08 [ 61%] Building CXX object test/unit/CMakeFiles/testcodegen.dir/codegen/codegen_utils.cpp.o 00:00:08 [ 62%] Linking CXX executable ../../bin/testcodegen 00:00:05 [ 62%] Built target testcodegen 00:00:00 [ 62%] Building CXX object test/unit/CMakeFiles/testmodtoken.dir/modtoken/modtoken.cpp.o 00:00:20 [ 63%] Linking CXX executable ../../bin/testmodtoken 00:00:02 [ 63%] Built target testmodtoken 00:00:00 [ 63%] Building CXX object test/unit/CMakeFiles/testlexer.dir/lexer/tokens.cpp.o 00:00:19 [ 64%] Linking CXX executable ../../bin/testlexer 00:00:02 [ 64%] Built target testlexer 00:00:00 [ 64%] Building CXX object test/unit/CMakeFiles/testunitlexer.dir/units/lexer.cpp.o 00:00:08 [ 65%] Linking CXX executable ../../bin/testunitlexer 00:00:00 [ 65%] Built target testunitlexer 00:00:00 [ 65%] Building CXX object test/unit/CMakeFiles/testfast_math.dir/fast_math/fast_math.cpp.o 00:00:08 [ 67%] Linking CXX executable ../../bin/testfast_math 00:00:00 [ 67%] Built target testfast_math 00:00:00 [ 67%] Building CXX object test/unit/CMakeFiles/config.dir///src/config/config.cpp.o 00:00:00 [ 68%] Linking CXX static library libconfig.a 00:00:01 [ 68%] Built target config 00:00:00 [ 69%] Building CXX object test/unit/CMakeFiles/testparser.dir/parser/parser.cpp.o 00:00:14 [ 69%] Linking CXX executable ../../bin/testparser 00:00:04 [ 69%] Built target testparser 00:00:00 [ 70%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/main.cpp.o 00:00:15 [ 70%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/after_cvode_to_cnexp.cpp.o 00:00:08 [ 71%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/constant_folder.cpp.o 00:00:09 [ 71%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/defuse_analyze.cpp.o 00:00:09 [ 72%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/global_to_range.cpp.o 00:00:09 [ 73%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/inline.cpp.o 00:00:08 [ 73%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/ispc_rename.cpp.o 00:00:10 [ 74%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/json.cpp.o 00:00:09 [ 74%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/kinetic_block.cpp.o 00:00:09 [ 75%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/localize.cpp.o 00:00:09 [ 76%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/local_to_assigned.cpp.o 00:00:09 [ 76%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/lookup.cpp.o 00:00:07 [ 77%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/loop_unroll.cpp.o 00:00:09 [ 77%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/misc.cpp.o 00:00:08 [ 78%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/neuron_solve.cpp.o 00:00:08 [ 79%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/nmodl.cpp.o 00:00:08 [ 79%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/perf.cpp.o 00:00:08 [ 80%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/rename.cpp.o 00:00:10 [ 80%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/solve_block.cpp.o 00:00:09 [ 81%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/steadystate.cpp.o 00:00:08 [ 81%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/sympy_conductance.cpp.o 00:00:09 [ 82%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/sympy_solver.cpp.o 00:00:12 [ 83%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/units.cpp.o 00:00:08 [ 83%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/var_usage.cpp.o 00:00:07 [ 84%] Building CXX object test/unit/CMakeFiles/testvisitor.dir/visitor/verbatim.cpp.o 00:00:07 [ 84%] Linking CXX executable ../../bin/testvisitor 00:00:10 [ 84%] Built target testvisitor 00:00:00 [ 85%] Building CXX object test/unit/CMakeFiles/testunitparser.dir/units/parser.cpp.o 00:00:08 [ 85%] Linking CXX executable ../../bin/testunitparser 00:00:01 [ 85%] Built target testunitparser 00:00:00 [ 85%] Building CXX object test/unit/CMakeFiles/testsymtab.dir/symtab/symbol_table.cpp.o 00:00:15 [ 86%] Linking CXX executable ../../bin/testsymtab 00:00:01 [ 86%] Built target testsymtab 00:00:00 [ 87%] Building CXX object test/unit/CMakeFiles/testprinter.dir/printer/printer.cpp.o 00:00:08 [ 88%] Linking CXX executable ../../bin/testprinter 00:00:01 [ 88%] Built target testprinter 00:00:00 [ 89%] Building CXX object test/unit/CMakeFiles/testnewton.dir/newton/newton.cpp.o 00:00:23 [ 89%] Linking CXX executable ../../bin/testnewton 00:00:00 [ 89%] Built target testnewton 00:00:00 [ 89%] Building CXX object src/CMakeFiles/nmodl.dir/main.cpp.o 00:00:17 [ 90%] Linking CXX executable ../bin/nmodl 00:00:08 [ 90%] Built target nmodl 00:00:00 [ 91%] Building CXX object src/lexer/CMakeFiles/units_lexer.dir/main_units.cpp.o 00:00:11 [ 92%] Linking CXX executable ../../bin/units_lexer 00:00:00 [ 92%] Built target units_lexer 00:00:00 [ 92%] Building CXX object src/lexer/CMakeFiles/c_lexer.dir/main_c.cpp.o 00:00:11 [ 93%] Linking CXX executable ../../bin/c_lexer 00:00:00 [ 93%] Built target c_lexer 00:00:00 [ 93%] Building CXX object src/lexer/CMakeFiles/nmodl_lexer.dir/main_nmodl.cpp.o 00:00:16 [ 94%] Linking CXX executable ../../bin/nmodl_lexer 00:00:01 [ 94%] Built target nmodl_lexer 00:00:00 [ 94%] Building CXX object src/parser/CMakeFiles/units_parser.dir/main_units.cpp.o 00:00:11 [ 95%] Linking CXX executable ../../bin/units_parser 00:00:01 [ 95%] Built target units_parser 00:00:00 [ 95%] Building CXX object src/parser/CMakeFiles/c_parser.dir/main_c.cpp.o 00:00:10 [ 96%] Linking CXX executable ../../bin/c_parser 00:00:01 [ 96%] Built target c_parser 00:00:00 [ 96%] Building CXX object src/parser/CMakeFiles/nmodl_parser.dir/main_nmodl.cpp.o 00:00:11 [ 97%] Linking CXX executable ../../bin/nmodl_parser 00:00:02 [ 97%] Built target nmodl_parser 00:00:00 [ 98%] Building CXX object src/visitors/CMakeFiles/nmodl_visitor.dir/main.cpp.o 00:00:15 [ 98%] Linking CXX executable ../../bin/nmodl_visitor 00:00:06 [ 98%] Built target nmodl_visitor 00:00:00 [100%] -- COPYING NMODL PYTHON FILES -- 00:00:00 [100%] Built target copy_python_files

If we have really heavy headers maybe we can use https://en.wikipedia.org/wiki/Precompiled_header

alkino commented 3 years ago

I try to precompiled ast.hpp, it changes nothing

alkino commented 2 years ago

Related to: https://github.com/BlueBrain/nmodl/issues/260