Commit 4551f45f authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Benchmarks: refactored common methods from CustomLogging and JsonLogging into the base class

parent 2b376ef4
Loading
Loading
Loading
Loading
+0 −49
Original line number Diff line number Diff line
@@ -49,51 +49,6 @@ public:
         std::cout << std::endl;
   }

   virtual void setMetadataColumns( const MetadataColumns& elements ) override
   {
      // check if a header element changed (i.e. a first item of the pairs)
      if( metadataColumns.size() != elements.size() )
         header_changed = true;
      else
         for( std::size_t i = 0; i < metadataColumns.size(); i++ )
            if( metadataColumns[ i ].first != elements[ i ].first ) {
               header_changed = true;
               break;
            }
      metadataColumns = elements;
   }

   virtual void
   setMetadataElement( const typename MetadataColumns::value_type & element,
                       int insertPosition = -1 /* negative values insert from the end */ ) override
   {
      bool found = false;
      for( auto & it : metadataColumns )
         if( it.first == element.first ) {
            if( it.second != element.second )
               it.second = element.second;
            found = true;
            break;
         }
      if( ! found ) {
         if( insertPosition < 0 )
            metadataColumns.insert( metadataColumns.end() + insertPosition + 1, element );
         else
            metadataColumns.insert( metadataColumns.begin() + insertPosition, element );
         header_changed = true;
      }
   }

   virtual void
   setMetadataWidths( const std::map< std::string, int > & widths ) override
   {
      for( auto & it : widths )
         if( metadataWidths.count( it.first ) )
            metadataWidths[ it.first ] = it.second;
         else
            metadataWidths.insert( it );
   }

   void
   writeTableHeader( const std::string & spanningElement,
                     const HeaderElements & subElements )
@@ -217,10 +172,6 @@ protected:
      str << num;
      return std::string( str.str().data() );
   }

   MetadataColumns metadataColumns;
   std::map< std::string, int > metadataWidths;
   bool header_changed = true;
};

} // namespace Benchmarks
+0 −49
Original line number Diff line number Diff line
@@ -44,51 +44,6 @@ public:
      }
   }

   virtual void setMetadataColumns( const MetadataColumns& elements ) override
   {
      // check if a header element changed (i.e. a first item of the pairs)
      if( metadataColumns.size() != elements.size() )
         header_changed = true;
      else
         for( std::size_t i = 0; i < metadataColumns.size(); i++ )
            if( metadataColumns[ i ].first != elements[ i ].first ) {
               header_changed = true;
               break;
            }
      this->metadataColumns = elements;
   }

   virtual void
   setMetadataElement( const typename MetadataColumns::value_type & element,
                       int insertPosition = -1 /* negative values insert from the end */ ) override
   {
      bool found = false;
      for( auto & it : metadataColumns )
         if( it.first == element.first ) {
            if( it.second != element.second )
               it.second = element.second;
            found = true;
            break;
         }
      if( ! found ) {
         if( insertPosition < 0 )
            metadataColumns.insert( metadataColumns.end() + insertPosition + 1, element );
         else
            metadataColumns.insert( metadataColumns.begin() + insertPosition, element );
         header_changed = true;
      }
   }

   virtual void
   setMetadataWidths( const std::map< std::string, int > & widths ) override
   {
      for( auto & it : widths )
         if( metadataWidths.count( it.first ) )
            metadataWidths[ it.first ] = it.second;
         else
            metadataWidths.insert( it );
   }

   void writeHeader( const HeaderElements& headerElements, const WidthHints& widths )
   {
      TNL_ASSERT_EQ( headerElements.size(), widths.size(), "elements must have equal sizes" );
@@ -200,10 +155,6 @@ protected:
      str << num;
      return std::string( str.str().data() );
   }

   MetadataColumns metadataColumns;
   std::map< std::string, int > metadataWidths;
   bool header_changed = true;
};

} // namespace Benchmarks
+46 −4
Original line number Diff line number Diff line
@@ -119,12 +119,50 @@ public:

   virtual void writeMetadata( const MetadataMap & metadata ) = 0;

   virtual void setMetadataColumns( const MetadataColumns& elements ) = 0;
   virtual void setMetadataColumns( const MetadataColumns& elements )
   {
      // check if a header element changed (i.e. a first item of the pairs)
      if( metadataColumns.size() != elements.size() )
         header_changed = true;
      else
         for( std::size_t i = 0; i < metadataColumns.size(); i++ )
            if( metadataColumns[ i ].first != elements[ i ].first ) {
               header_changed = true;
               break;
            }
      metadataColumns = elements;
   }

   virtual void setMetadataElement( const typename MetadataColumns::value_type & element,
                                    int insertPosition = -1 /* negative values insert from the end */ ) = 0;
   virtual void
   setMetadataElement( const typename MetadataColumns::value_type & element,
                       int insertPosition = -1 /* negative values insert from the end */ )
   {
      bool found = false;
      for( auto & it : metadataColumns )
         if( it.first == element.first ) {
            if( it.second != element.second )
               it.second = element.second;
            found = true;
            break;
         }
      if( ! found ) {
         if( insertPosition < 0 )
            metadataColumns.insert( metadataColumns.end() + insertPosition + 1, element );
         else
            metadataColumns.insert( metadataColumns.begin() + insertPosition, element );
         header_changed = true;
      }
   }

   virtual void setMetadataWidths( const std::map< std::string, int > & widths ) = 0;
   virtual void
   setMetadataWidths( const std::map< std::string, int > & widths )
   {
      for( auto & it : widths )
         if( metadataWidths.count( it.first ) )
            metadataWidths[ it.first ] = it.second;
         else
            metadataWidths.insert( it );
   }

   virtual void
   logResult( const std::string& performer,
@@ -140,6 +178,10 @@ public:
protected:
   std::ostream& log;
   int verbose = 0;

   MetadataColumns metadataColumns;
   std::map< std::string, int > metadataWidths;
   bool header_changed = true;
};

} // namespace Benchmarks