Forums
profiling - Printable Version

+- Forums (https://www.vdrift.net/Forum)
+-- Forum: Project (https://www.vdrift.net/Forum/forumdisplay.php?fid=4)
+--- Forum: Development (https://www.vdrift.net/Forum/forumdisplay.php?fid=9)
+--- Thread: profiling (/showthread.php?tid=1264)

Pages: 1 2


- joevenzon - 07-19-2010

Yeah, that's line 836 in graphics_renderers.cpp. Probably only really needs to be done once, however it should only get called in the non-shader path.


- NaN - 12-23-2010

Have been profiling cardynamics changes lately and noticed that we are spending a lot of time in DRAWABLE_CONTAINER_HELPER::AccumulateSize::operator(). I wonder if we are missing an optimization opportunity here.

Code:
13.75      1.76     1.76 _mcount_private
12.11      3.31     1.55 16467397     0.00     0.00  void DRAWABLE_CONTAINER_HELPER::AccumulateSize::operator()<keyed_container<DRAWABLE> >(keyed_container<DRAWABLE> const&)
  7.73      4.30     0.99    30452     0.00     0.00  void SCENENODE::Traverse<PTRVECTOR>(DRAWABLE_CONTAINER<PTRVECTOR>&, MATRIX4<float> const&)
  3.75      4.78     0.48    16986     0.00     0.00  void AABB_SPACE_PARTITIONING_NODE<DRAWABLE*, 1u>::Query<FRUSTUM, std::vector<DRAWABLE*, std::allocator<DRAWABLE*> > >(FRUSTUM const&, std::vector<DRAWABLE*, std::allocator<DRAWABLE*> >&) const
  2.58      5.11     0.33  1333989     0.00     0.00  RENDER_INPUT_SCENE::SelectTexturing(DRAWABLE&, GLSTATEMANAGER&)
  2.34      5.41     0.30  1333964     0.00     0.00  RENDER_INPUT_SCENE::SelectTransformStart(DRAWABLE&, GLSTATEMANAGER&)



- joevenzon - 12-23-2010

Good catch. It was happening because the scenenode was doing an early out if its drawlist was empty, and empty() was calling size() which is more expensive than I realized. Traverse() is so fast (it just seems slow because it's called so frequently) that it's actually better to skip the early-out check entirely.


- thelusiv - 12-24-2010

We need a wiki page on how to profile VDrift. If anyone would like to start one, they could probably use some of the information in this thread.

http://wiki.vdrift.net/VDrift_Documentation_Wiki:Todo?title=Profiling&action=edit


- joevenzon - 12-24-2010

OK, I put something really simple there.