diff Framework/Loaders/OrthancMultiframeVolumeLoader.cpp @ 1487:75ac66d5f4b2 bgo-timing-tests

Added timing test for dose loading and histogram computation
author Benjamin Golinvaux <bgo@osimis.io>
date Tue, 09 Jun 2020 09:50:03 +0200
parents f4a06ad1580b
children
line wrap: on
line diff
--- a/Framework/Loaders/OrthancMultiframeVolumeLoader.cpp	Sat Jun 06 11:04:04 2020 +0200
+++ b/Framework/Loaders/OrthancMultiframeVolumeLoader.cpp	Tue Jun 09 09:50:03 2020 +0200
@@ -24,6 +24,9 @@
 #include <Core/Endianness.h>
 #include <Core/Toolbox.h>
 
+#include <boost/date_time/posix_time/posix_time.hpp>
+
+
 namespace OrthancStone
 {
   class OrthancMultiframeVolumeLoader::LoadRTDoseGeometry : public LoaderStateMachine::State
@@ -262,10 +265,23 @@
     CopyPixel(*targetUp, source);
   }
 
+
+  #define TIME_CHECKPOINT(name)                            \
+    {                                                      \
+      pt::ptime nowTime = pt::second_clock::local_time();  \
+      pt::time_duration diff = nowTime - initialTime;      \
+      uint64_t us = diff.total_microseconds();             \
+      timingUSecMap_[name] = us;                         \
+    }
+
   template <typename T>
   void OrthancMultiframeVolumeLoader::CopyPixelDataAndComputeDistribution(
     const std::string& pixelData, std::map<T,uint64_t>& distribution)
   {
+    namespace pt = boost::posix_time;
+
+    pt::ptime initialTime = pt::second_clock::local_time();
+
     OrthancStone::ImageBuffer3D& target = volume_->GetPixelData();
       
     const unsigned int bpp = target.GetBytesPerPixel();
@@ -284,6 +300,7 @@
       return;
     }
 
+    TIME_CHECKPOINT("start")
     // first pass to initialize map
     {
       const uint8_t* source = reinterpret_cast<const uint8_t*>(pixelData.c_str());
@@ -302,7 +319,7 @@
         }
       }
     }
-
+    TIME_CHECKPOINT("map_initialized")
     {
       const uint8_t* source = reinterpret_cast<const uint8_t*>(pixelData.c_str());
 
@@ -353,6 +370,7 @@
 #endif
       }
     }
+    TIME_CHECKPOINT("pixels_and_distribution_ok")
   }
 
   template <typename T>