tesseract-robotics / tesseract_planning

Contains packages related to motion and process planning for the Tesseract Motion Planning Environment
http://tesseract-docs.rtfd.io
Other
46 stars 37 forks source link

Profile Compile time #43

Open mpowelson opened 3 years ago

mpowelson commented 3 years ago

It might be interesting to profile the Tesseract compile time was done for MoveIt here: https://github.com/ros-planning/moveit/issues/2081

mpowelson commented 3 years ago

I ran the profiling on tesseract_planning and the dependencies in dependencies.rosinstall. Here is the output. Here are my notes on how to generate this. @Levi-Armstrong might be interested.

**** Time summary:
Compilation (538 times):
  Parsing (frontend):         1540.9 s
  Codegen & opts (backend):    526.4 s

**** Files that took longest to parse (compiler frontend):
 16728 ms: /home/matthew/code/tesseract/build//tesseract_motion_planners/CMakeFiles/tesseract_motion_planners_ompl.dir/src/ompl/profile/ompl_default_plan_profile.cpp.o
 16276 ms: /home/matthew/code/tesseract/build//trajopt/CMakeFiles/trajopt.dir/src/problem_description.cpp.o
 15829 ms: /home/matthew/code/tesseract/build//tesseract_motion_planners/CMakeFiles/tesseract_motion_planners_simple.dir/src/simple/profile/simple_planner_utils.cpp.o
 15750 ms: /home/matthew/code/tesseract/build//trajopt/CMakeFiles/trajopt.dir/src/collision_terms.cpp.o
 15739 ms: /home/matthew/code/tesseract/build//tesseract_motion_planners/CMakeFiles/tesseract_motion_planners_descartes.dir/src/descartes/profile/descartes_default_plan_profile.cpp.o
 15468 ms: /home/matthew/code/tesseract/build//tesseract_motion_planners/CMakeFiles/tesseract_motion_planners_descartes.dir/src/descartes/descartes_robot_sampler.cpp.o
 13781 ms: /home/matthew/code/tesseract/build//tesseract_kinematics/CMakeFiles/tesseract_kinematics_kdl.dir/src/kdl/kdl_fwd_kin_chain.cpp.o
 13092 ms: /home/matthew/code/tesseract/build//tesseract_process_managers/CMakeFiles/tesseract_process_managers.dir/src/core/process_planning_server.cpp.o
 12934 ms: /home/matthew/code/tesseract/build//tesseract_kinematics/CMakeFiles/tesseract_kinematics_kdl.dir/src/kdl/kdl_fwd_kin_tree.cpp.o
 12784 ms: /home/matthew/code/tesseract/build//tesseract_kinematics/CMakeFiles/tesseract_kinematics_opw.dir/src/opw/opw_inv_kin.cpp.o

**** Files that took longest to codegen (compiler backend):
 14329 ms: /home/matthew/code/tesseract/build//trajopt/CMakeFiles/trajopt.dir/src/problem_description.cpp.o
 11265 ms: /home/matthew/code/tesseract/build//trajopt/CMakeFiles/trajopt.dir/src/kinematic_terms.cpp.o
  8203 ms: /home/matthew/code/tesseract/build//tesseract_motion_planners/examples/CMakeFiles/tesseract_motion_planners_raster_example.dir/raster_example.cpp.o
  7847 ms: /home/matthew/code/tesseract/build//tesseract_urdf/CMakeFiles/tesseract_urdf.dir/src/convex_mesh.cpp.o
  7788 ms: /home/matthew/code/tesseract/build//trajopt/CMakeFiles/trajopt.dir/src/collision_terms.cpp.o
  7069 ms: /home/matthew/code/tesseract/build//trajopt_sco/CMakeFiles/trajopt_sco.dir/src/modeling_utils.cpp.o
  6860 ms: /home/matthew/code/tesseract/build//tesseract_motion_planners/examples/CMakeFiles/tesseract_motion_planners_chain_example.dir/chain_example.cpp.o
  6846 ms: /home/matthew/code/tesseract/build//tesseract_environment/CMakeFiles/tesseract_environment_core.dir/src/core/environment.cpp.o
  6242 ms: /home/matthew/code/tesseract/build//tesseract_process_managers/CMakeFiles/tesseract_process_managers.dir/src/task_generators/fix_state_collision_task_generator.cpp.o
  6091 ms: /home/matthew/code/tesseract/build//tesseract_motion_planners/CMakeFiles/tesseract_motion_planners_ompl.dir/src/ompl/profile/ompl_default_plan_profile.cpp.o

**** Templates that took longest to instantiate:
 45536 ms: Eigen::JacobiSVD<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 2>::Jacob... (21 times, avg 2168 ms)
 45420 ms: Eigen::JacobiSVD<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 2>::compute (21 times, avg 2162 ms)
 41087 ms: Eigen::internal::qr_preconditioner_impl<Eigen::Matrix<double, -1, -1... (21 times, avg 1956 ms)
 38175 ms: Eigen::Transform<double, 3, 1, 0>::inverse (108 times, avg 353 ms)
 26949 ms: Eigen::EigenSolver<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::Eigen... (21 times, avg 1283 ms)
 26850 ms: Eigen::EigenSolver<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::compu... (21 times, avg 1278 ms)
 25876 ms: Eigen::Transform<double, 3, 1, 0>::operator* (131 times, avg 197 ms)
 25290 ms: Eigen::internal::transform_transform_product_impl<Eigen::Transform<d... (123 times, avg 205 ms)
 24900 ms: boost::breadth_first_search<boost::adjacency_list<boost::listS, boos... (133 times, avg 187 ms)
 24836 ms: boost::detail::bfs_dispatch<boost::associative_property_map<std::map... (133 times, avg 186 ms)
 24573 ms: boost::detail::bfs_helper<boost::adjacency_list<boost::listS, boost:... (133 times, avg 184 ms)
 24566 ms: Eigen::RealSchur<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::compute... (21 times, avg 1169 ms)
 23913 ms: Eigen::HouseholderSequence<Eigen::Matrix<double, -1, -1, 0, -1, -1>,... (21 times, avg 1138 ms)
 23874 ms: Eigen::internal::apply_block_householder_on_the_left<Eigen::Block<Ei... (21 times, avg 1136 ms)
 23418 ms: boost::breadth_first_search<boost::adjacency_list<boost::listS, boos... (133 times, avg 176 ms)
 23296 ms: boost::breadth_first_search<boost::adjacency_list<boost::listS, boos... (133 times, avg 175 ms)
 22156 ms: Eigen::Transform<double, 3, 1, 0>::rotation (47 times, avg 471 ms)
 22131 ms: Eigen::Transform<double, 3, 1, 0>::computeRotationScaling<Eigen::Mat... (47 times, avg 470 ms)
 22028 ms: Eigen::RealSchur<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::compute... (21 times, avg 1048 ms)
 21129 ms: boost::breadth_first_visit<boost::adjacency_list<boost::listS, boost... (133 times, avg 158 ms)
 20841 ms: Eigen::RealSchur<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::perform... (21 times, avg 992 ms)
 14129 ms: boost::adjacency_list<boost::listS, boost::listS, boost::bidirection... (133 times, avg 106 ms)
 14034 ms: boost::adj_list_impl<boost::adjacency_list<boost::listS, boost::list... (133 times, avg 105 ms)
 13640 ms: boost::adj_list_impl<boost::adjacency_list<boost::listS, boost::list... (133 times, avg 102 ms)
 12917 ms: Eigen::internal::make_block_householder_triangular_factor<Eigen::Mat... (21 times, avg 615 ms)
 12810 ms: Eigen::JacobiSVD<Eigen::Matrix<double, 3, 3, 0, 3, 3>, 2>::JacobiSVD (47 times, avg 272 ms)
 12800 ms: Eigen::JacobiSVD<Eigen::Matrix<double, 3, 3, 0, 3, 3>, 2>::compute (47 times, avg 272 ms)
 12166 ms: Eigen::Block<Eigen::Matrix<double, 4, 4, 0, 4, 4>, 3, 3, false>::ope... (123 times, avg 98 ms)
 12144 ms: Eigen::BlockImpl<Eigen::Matrix<double, 4, 4, 0, 4, 4>, 3, 3, false, ... (123 times, avg 98 ms)
 12130 ms: Eigen::internal::BlockImpl_dense<Eigen::Matrix<double, 4, 4, 0, 4, 4... (123 times, avg 98 ms)

**** Template sets that took longest to instantiate:
135678 ms: Eigen::internal::call_assignment_no_alias<$> (5473 times, avg 24 ms)
132976 ms: Eigen::internal::Assignment<$>::run (5438 times, avg 24 ms)
132050 ms: Eigen::MatrixBase<$> (16960 times, avg 7 ms)
 85417 ms: Eigen::internal::call_assignment<$> (4414 times, avg 19 ms)
 83056 ms: Eigen::internal::call_dense_assignment_loop<$> (6028 times, avg 13 ms)
 73085 ms: Eigen::Matrix<$>::Matrix<$> (1905 times, avg 38 ms)
 69879 ms: Eigen::PlainObjectBase<$>::_set_noalias<$> (1390 times, avg 50 ms)
 60845 ms: Eigen::DenseBase<$> (18261 times, avg 3 ms)
 58347 ms: Eigen::JacobiSVD<$>::JacobiSVD (68 times, avg 858 ms)
 58221 ms: Eigen::JacobiSVD<$>::compute (68 times, avg 856 ms)
 55689 ms: Eigen::internal::generic_product_impl<$>::evalTo<$> (801 times, avg 69 ms)
 51006 ms: Eigen::internal::dense_assignment_loop<$>::run (6080 times, avg 8 ms)
 43350 ms: Eigen::MapBase<$> (5296 times, avg 8 ms)
 41239 ms: Eigen::internal::qr_preconditioner_impl<$>::run (42 times, avg 981 ms)
 40278 ms: Eigen::PlainObjectBase<$>::_init1<$> (830 times, avg 48 ms)
 40171 ms: Eigen::Block<$> (4061 times, avg 9 ms)
 39243 ms: Eigen::BlockImpl<$> (4061 times, avg 9 ms)
 39199 ms: Eigen::internal::generic_dense_assignment_kernel<$>::assignCoeff (1044 times, avg 37 ms)
 38871 ms: Eigen::internal::product_evaluator<$>::coeff (788 times, avg 49 ms)
 38631 ms: Eigen::internal::BlockImpl_dense<$> (4060 times, avg 9 ms)
 38175 ms: Eigen::Transform<$>::inverse (108 times, avg 353 ms)
 32348 ms: Eigen::PlainObjectBase<$>::PlainObjectBase<$> (722 times, avg 44 ms)
 32334 ms: Eigen::internal::generic_dense_assignment_kernel<$>::assignCoeffByOu... (1147 times, avg 28 ms)
 31431 ms: Eigen::PlainObjectBase<$> (2693 times, avg 11 ms)
 31369 ms: Eigen::CwiseBinaryOp<$> (2982 times, avg 10 ms)
 29594 ms: Eigen::CwiseBinaryOpImpl<$> (2982 times, avg 9 ms)
 29449 ms: std::make_shared<$> (4093 times, avg 7 ms)
 28182 ms: Eigen::Matrix<$> (2278 times, avg 12 ms)
 26949 ms: Eigen::EigenSolver<$>::EigenSolver<$> (21 times, avg 1283 ms)
 26859 ms: Eigen::internal::traits<$> (24165 times, avg 1 ms)

**** Functions that took longest to compile:
  2651 ms: tesseract_planning::rasterExampleProgram(std::__cxx11::basic_string<... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/examples/raster_manager_example.cpp)
  2228 ms: main (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_motion_planners/examples/raster_example.cpp)
  1433 ms: tesseract_planning::RasterWAADDTTaskflow::generateTaskflow(tesseract... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/src/taskflow_generators/raster_waad_dt_taskflow.cpp)
  1232 ms: tesseract_planning::DefaultTrajOptIfoptProblemGenerator(std::__cxx11... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_motion_planners/src/trajopt_ifopt/problem_generators/default_problem_generator.cpp)
  1089 ms: tesseract_planning::RasterDTTaskflow::generateTaskflow(tesseract_pla... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/src/taskflow_generators/raster_dt_taskflow.cpp)
  1013 ms: tesseract_planning::DefaultTrajoptProblemGenerator(std::__cxx11::bas... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_motion_planners/src/trajopt/problem_generators/default_problem_generator.cpp)
   968 ms: tesseract_planning::RasterWAADTaskflow::generateTaskflow(tesseract_p... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/src/taskflow_generators/raster_waad_taskflow.cpp)
   964 ms: main (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_motion_planners/examples/chain_example.cpp)
   953 ms: tesseract_planning::RasterGlobalTaskflow::generateTaskflow(tesseract... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/src/taskflow_generators/raster_global_taskflow.cpp)
   897 ms: tesseract_planning::RasterTaskflow::generateTaskflow(tesseract_plann... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/src/taskflow_generators/raster_taskflow.cpp)
   830 ms: trajopt::JointVelTermInfo::hatch(trajopt::TrajOptProb&) (/home/matthew/code/tesseract/src/trajopt/trajopt/src/problem_description.cpp)
   784 ms: tesseract_planning::getClosestJointSolution(Eigen::Transform<double,... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_motion_planners/src/simple/profile/simple_planner_utils.cpp)
   776 ms: sco::BasicTrustRegionSQP::optimize() (/home/matthew/code/tesseract/src/trajopt/trajopt_sco/src/optimizers.cpp)
   756 ms: std::shared_ptr<tesseract_planning::DescartesProblem<double> > tesse... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_motion_planners/examples/raster_example.cpp)
   755 ms: btConvexHullInternal::shiftFace(btConvexHullInternal::Face*, float, ... (/home/matthew/code/tesseract/src/trajopt/trajopt_ext/vhacd/src/btConvexHullComputer.cpp)
   712 ms: tesseract_planning::RasterOnlyGlobalTaskflow::generateTaskflow(tesse... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/src/taskflow_generators/raster_only_global_taskflow.cpp)
   678 ms: tesseract_planning::IterativeSplineParameterization::compute(tessera... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_time_parameterization/src/iterative_spline_parameterization.cpp)
   663 ms: std::shared_ptr<tesseract_planning::DescartesProblem<double> > tesse... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_motion_planners/examples/chain_example.cpp)
   636 ms: trajopt::ConstructProblem(trajopt::ProblemConstructionInfo const&) (/home/matthew/code/tesseract/src/trajopt/trajopt/src/problem_description.cpp)
   596 ms: std::shared_ptr<tesseract_planning::DescartesProblem<float> > tesser... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/src/taskflow_generators/descartes_taskflow.cpp)
   587 ms: trajopt::DiscreteCollisionEvaluator::Plot(std::shared_ptr<tesseract_... (/home/matthew/code/tesseract/src/trajopt/trajopt/src/collision_terms.cpp)
   587 ms: trajopt::DynamicCartPoseJacCalculator::operator()(Eigen::Matrix<doub... (/home/matthew/code/tesseract/src/trajopt/trajopt/src/kinematic_terms.cpp)
   587 ms: std::shared_ptr<tesseract_planning::DescartesProblem<float> > tesser... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/src/taskflow_generators/cartesian_taskflow.cpp)
   584 ms: trajopt::CollisionTermInfo::fromJson(trajopt::ProblemConstructionInf... (/home/matthew/code/tesseract/src/trajopt/trajopt/src/problem_description.cpp)
   563 ms: tesseract_planning::DefaultOMPLProblemGenerator(std::__cxx11::basic_... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_motion_planners/src/ompl/problem_generators/default_problem_generator.cpp)
   563 ms: tesseract_planning::RasterOnlyTaskflow::generateTaskflow(tesseract_p... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/src/taskflow_generators/raster_only_taskflow.cpp)
   539 ms: std::vector<std::shared_ptr<tesseract_geometry::Mesh>, std::allocato... (/home/matthew/code/tesseract/src/tesseract/tesseract_geometry/examples/parse_mesh_example.cpp)
   539 ms: trajopt::CollisionTermInfo::hatch(trajopt::TrajOptProb&) (/home/matthew/code/tesseract/src/trajopt/trajopt/src/problem_description.cpp)
   497 ms: sco::BPMPDModel::optimize() (/home/matthew/code/tesseract/src/trajopt/trajopt_sco/src/bpmpd_interface.cpp)
   490 ms: tesseract_planning::MoveWaypointFromCollisionTrajopt(tesseract_plann... (/home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/src/task_generators/fix_state_collision_task_generator.cpp)

**** Function sets that took longest to compile / optimize:
  2654 ms: tesseract_planning::rasterExampleProgram(std::__cxx11::basic_string<... (2 times, avg 1327 ms)
  2613 ms: std::shared_ptr<$> tesseract_planning::DefaultDescartesProblemGenera... (8 times, avg 326 ms)
  2578 ms: Eigen::internal::dense_assignment_loop<$>::run(Eigen::internal::gene... (1102 times, avg 2 ms)
  2298 ms: void std::vector<$>::_M_range_insert<$>(__gnu_cxx::__normal_iterator... (39 times, avg 58 ms)
  1937 ms: std::__cxx11::basic_string<$>* std::__uninitialized_copy<$>::__unini... (160 times, avg 12 ms)
  1899 ms: std::vector<$> tesseract_geometry::extractMeshData<$>(aiScene const*... (10 times, avg 189 ms)
  1800 ms: std::__shared_ptr<$>::~__shared_ptr() (1652 times, avg 1 ms)
  1611 ms: tesseract_environment::AdjacencyMap::AdjacencyMap(std::shared_ptr<$>... (15 times, avg 107 ms)
  1474 ms: std::vector<$>::~vector() (618 times, avg 2 ms)
  1437 ms: tesseract_planning::RasterWAADDTTaskflow::generateTaskflow(tesseract... (2 times, avg 718 ms)
  1263 ms: Eigen::internal::copy_using_evaluator_innervec_CompleteUnrolling<$>:... (1179 times, avg 1 ms)
  1236 ms: tesseract_planning::DefaultTrajOptIfoptProblemGenerator(std::__cxx11... (2 times, avg 618 ms)
  1229 ms: void std::_Hashtable<$>::_M_assign<$>(std::_Hashtable<$> const&, std... (90 times, avg 13 ms)
  1197 ms: std::_Sp_counted_ptr_inplace<$>::_M_get_deleter(std::type_info const&) (657 times, avg 1 ms)
  1092 ms: tesseract_planning::RasterDTTaskflow::generateTaskflow(tesseract_pla... (2 times, avg 546 ms)
  1016 ms: tesseract_planning::DefaultTrajoptProblemGenerator(std::__cxx11::bas... (2 times, avg 508 ms)
   996 ms: std::_Hashtable<$>::~_Hashtable() (304 times, avg 3 ms)
   977 ms: void __gnu_cxx::new_allocator<$>::construct<$>(tesseract_scene_graph... (135 times, avg 7 ms)
   972 ms: tesseract_planning::RasterWAADTaskflow::generateTaskflow(tesseract_p... (2 times, avg 486 ms)
   955 ms: tesseract_planning::RasterGlobalTaskflow::generateTaskflow(tesseract... (2 times, avg 477 ms)
   946 ms: tesseract_planning::DescartesMotionPlanner<$>::solve(tesseract_plann... (4 times, avg 236 ms)
   900 ms: tesseract_planning::RasterTaskflow::generateTaskflow(tesseract_plann... (2 times, avg 450 ms)
   890 ms: std::_Hashtable<$>::_M_insert_unique_node(unsigned long, unsigned lo... (105 times, avg 8 ms)
   846 ms: std::_Function_base::_Base_manager<$>::_M_manager(std::_Any_data&, s... (251 times, avg 3 ms)
   835 ms: tesseract_collision::loadSimplePlyFile(std::__cxx11::basic_string<$>... (6 times, avg 139 ms)
   830 ms: void std::vector<$>::_M_realloc_insert<$>(__gnu_cxx::__normal_iterat... (37 times, avg 22 ms)
   792 ms: tesseract_collision::createConvexHull(std::vector<$>&, Eigen::Matrix... (11 times, avg 72 ms)
   785 ms: tesseract_planning::getClosestJointSolution(Eigen::Transform<$> cons... (2 times, avg 392 ms)
   780 ms: void std::vector<$>::_M_realloc_insert<$>(__gnu_cxx::__normal_iterat... (36 times, avg 21 ms)
   771 ms: bool std::__detail::_Compiler<$>::_M_expression_term<$>(std::pair<$>... (20 times, avg 38 ms)

*** Expensive headers:
301055 ms: /home/matthew/code/tesseract/devel/include/tesseract_scene_graph/graph.h (included 130 times, avg 2315 ms), included via:
  group_states.cpp.o  (4600 ms)
  utils.cpp.o utils.h  (4552 ms)
  parse_srdf_example.cpp.o  (4262 ms)
  collision_margins.cpp.o  (3991 ms)
  kdl_inv_kin_chain_lma.cpp.o kdl_parser.h  (3708 ms)
  kdl_fwd_kin_chain.cpp.o kdl_parser.h  (3656 ms)
  ...

248929 ms: /home/matthew/code/tesseract/devel/include/tesseract_environment/core/environment.h (included 94 times, avg 2648 ms), included via:
  process_environment_cache.cpp.o process_environment_cache.h  (5612 ms)
  process_planning_server.cpp.o task_info.h  (5063 ms)
  task_info.cpp.o task_info.h  (4884 ms)
  descartes_collision.cpp.o descartes_collision.h  (4875 ms)
  trajopt_default_composite_profile.cpp.o problem_description.hpp  (4835 ms)
  default_problem_generator.cpp.o default_problem_generator.h problem_description.hpp  (4819 ms)
  ...

153222 ms: /usr/include/eigen3/Eigen/Core (included 229 times, avg 669 ms), included via:
  state_waypoint.cpp.o state_waypoint.h  (1258 ms)
  descartes_utils.cpp.o descartes_utils.h types.h  (1257 ms)
  serialization.cpp.o Dense  (1251 ms)
  kinematic_limits.cpp.o kinematic_limits.h  (1216 ms)
  default_problem_generator.cpp.o validate.h Geometry  (1161 ms)
  cartesian_waypoint.cpp.o serialization.h Dense  (1142 ms)
  ...

110816 ms: /home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/include/tesseract_process_managers/core/task_info.h (included 36 times, avg 3078 ms), included via:
  task_info.cpp.o  (6061 ms)
  process_planning_server.cpp.o  (6021 ms)
  taskflow_interface.cpp.o  (5763 ms)
  task_input.cpp.o task_input.h taskflow_interface.h  (5349 ms)
  default_process_planners.cpp.o default_process_planners.h taskflow_generator.h task_input.h taskflow_interface.h  (5198 ms)
  process_planning_future.cpp.o process_planning_future.h taskflow_interface.h  (4649 ms)
  ...

107363 ms: /usr/include/eigen3/Eigen/Geometry (included 224 times, avg 479 ms), included via:
  default_problem_generator.cpp.o validate.h  (1373 ms)
  move_instruction.cpp.o move_instruction.h  (1372 ms)
  descartes_default_plan_profile.cpp.o descartes_default_plan_profile.hpp move_instruction.h  (1285 ms)
  get_instruction_utils.cpp.o get_instruction_utils.h plan_instruction.h  (1283 ms)
  filter_functions.cpp.o plan_instruction.h  (1277 ms)
  timing_edge_evaluator.cpp.o timing_edge_evaluator.hpp timing_edge_evaluator.h  (1264 ms)
  ...

101457 ms: /home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/include/tesseract_process_managers/core/utils.h (included 23 times, avg 4411 ms), included via:
  continuous_contact_check_task_generator.cpp.o  (5690 ms)
  utils.cpp.o  (5648 ms)
  seed_min_length_task_generator.cpp.o  (5535 ms)
  motion_planner_task_generator.cpp.o  (5532 ms)
  profile_switch_task_generator.cpp.o  (5458 ms)
  descartes_taskflow.cpp.o  (5385 ms)
  ...

93449 ms: /home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/include/tesseract_process_managers/core/task_input.h (included 34 times, avg 2748 ms), included via:
  task_input.cpp.o  (5760 ms)
  default_process_planners.cpp.o default_process_planners.h taskflow_generator.h  (5573 ms)
  task_generator.cpp.o task_generator.h  (4626 ms)
  taskflow_container.cpp.o taskflow_container.h task_generator.h  (4548 ms)
  descartes_taskflow.cpp.o utils.h  (3795 ms)
  continuous_contact_check_task_generator.cpp.o utils.h  (3769 ms)
  ...

90636 ms: /home/matthew/code/tesseract/src/tesseract_planning/tesseract_process_managers/include/tesseract_process_managers/core/taskflow_interface.h (included 35 times, avg 2589 ms), included via:
  task_input.cpp.o task_input.h  (5353 ms)
  default_process_planners.cpp.o default_process_planners.h taskflow_generator.h task_input.h  (5206 ms)
  process_planning_future.cpp.o process_planning_future.h  (4657 ms)
  task_generator.cpp.o task_generator.h task_input.h  (4362 ms)
  taskflow_container.cpp.o taskflow_container.h task_generator.h task_input.h  (4296 ms)
  descartes_taskflow.cpp.o utils.h task_input.h  (3524 ms)
  ...

65664 ms: /home/matthew/code/tesseract/devel/include/tesseract_common/utils.h (included 168 times, avg 390 ms), included via:
  groups.cpp.o  (2216 ms)
  origin.cpp.o  (2086 ms)
  octree.cpp.o  (2055 ms)
  box.cpp.o  (2024 ms)
  octomap.cpp.o  (1990 ms)
  mesh.cpp.o  (1929 ms)
  ...

61775 ms: /home/matthew/code/tesseract/devel/include/tesseract_common/types.h (included 176 times, avg 350 ms), included via:
  descartes_utils.cpp.o descartes_utils.h  (2077 ms)
  freespace_example.cpp.o  (1015 ms)
  memory_usage_example.cpp.o  (926 ms)
  kinematics_information.cpp.o kinematics_information.h  (714 ms)
  groups.cpp.o utils.h  (638 ms)
  raster_manager_example.cpp.o  (622 ms)
  ...

  done in 0.8s.
Levi-Armstrong commented 3 years ago

Is there documentation or guidance on how you go about using this information to improve things?

mpowelson commented 3 years ago

Not that I know of. I was mostly just running this to see if Taskflow showed up as a big bottleneck. I imagine the boost and eigen stuff we are kind of stuck with.

I found the expensive headers interesting. I imagine we could clean up some of those. I bet there are some places we can forward declare things to prevent including things like graph.h or environment.h

I also noticed that several of the files in tesseract_motion_planners showed up in longest to parse. I think we've known that we should probably split up that target regardless to avoid bottlenecks.