Performance

- Corrected performance measurement.  The TDB2::gc requires data to
  be loaded first, but load time is measured separately.  This resulted
  in repeat counting.  Now the gc time subtracts any load time that is
  accumulated *during* the gc.  This is now a fair accounting of the time.
This commit is contained in:
Paul Beckingham 2012-02-20 09:26:52 -05:00
parent d386081c4c
commit 259f39f2d2
3 changed files with 14 additions and 0 deletions

View file

@ -1503,6 +1503,7 @@ void TDB2::revert ()
int TDB2::gc ()
{
context.timer_gc.start ();
unsigned long load_start = context.timer_load.total ();
// Allowed as a temporary override.
if (context.config.getBoolean ("gc"))
@ -1611,7 +1612,11 @@ int TDB2::gc ()
// TODO Remove dangling dependencies
}
// Stop and remove accumulated load time from the GC time, because they
// overlap.
context.timer_gc.stop ();
context.timer_gc.subtract (context.timer_load.total () - load_start);
return 0;
}

View file

@ -105,4 +105,12 @@ unsigned long Timer::total () const
}
////////////////////////////////////////////////////////////////////////////////
void Timer::subtract (unsigned long value)
{
if (value > _total)
_total = 0;
else
_total -= value;
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -44,6 +44,7 @@ public:
void start ();
void stop ();
unsigned long total () const;
void subtract (unsigned long);
private:
std::string _description;