It is used when the timer needs to be started and stopped multiple times. Because this results in a loss of precision, use ITimingTest whenever possible.
To use, subclass and override startStopTimingTest much as you would override ITimingTest::timingTest.
Constructors & DestructorClass constructors and destructors.
![]() |
public:
virtual ~IStartStopTimingTest()
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
![]() |
public:
IStartStopTimingTest(const IStartStopTimingTest& other)
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
protected:
IStartStopTimingTest( unsigned long timingCount, unsigned long sampleCount )
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
protected:
IStartStopTimingTest()
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
Assignment OperatorsStandard assignment operators.
![]() |
public:
IStartStopTimingTest& operator =( const IStartStopTimingTest& other )
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
Specialization MethodsAdvanced specialized subclass methods to be used only by those users with a good understanding of the Timing Test classes.
![]() |
protected:
virtual void doUntimedTest()
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
![]() |
protected:
virtual double oneEmptySample()
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
![]() |
protected:
virtual double oneSample()
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
![]() |
protected:
virtual double samplingErrorMicroseconds() const
For start-stop tests, the sampling error per sample is k alpha, where k is the number of calls to start or stop per call to startStopTimingTest.
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
Timing MethodsMethods used to start and stop the timing test.
![]() |
protected:
virtual void emptyStartStopTimingTest( ITimingTestStopwatch& )
The ITimingTestStopwatch is the stopwatch object which you should start and stop. In your overridden version, start and stop this object as many times as you do in startStopTimingTest. For example: Start, stop, start, stop. IStartStopTimingTest uses this function to calibrate times and account for the overhead involved in starting or stopping the timer.
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
![]() |
protected:
virtual void startStopTimingTest(ITimingTestStopwatch&) = 0
For example:
{
// Setup the test
timer.start();
// Do the operation to be timed
// ...
// Stop the timer
timer.stop();
// Cleanup
};
If necessary, the timer can be started and stopped more than once, but this should be avoided if at all possible.
The startStopTimingTest method should always assume the timer is stopped on entry into the method, and should always stop the timer before exiting the method.
| Windows | OS/2 | AIX |
| Yes | Yes | Yes |
virtual ~ITest()
void copyInputs(int& argc, char * *& argv) const
virtual EStage exceptionStage() const
virtual bool lookupInfo(const IString& key, IString& info)
ITest& operator =(const ITest& test)
ITieredTextBuffer& outputTextStream()
virtual void run()
virtual unsigned long runCount() const
void setInputs(const int argc, const char * const* argv)
bool success() const
virtual ~ITimingTest()
double automaticSampleTolerance() const
bool automaticSampling() const
void calibrate()
double calibratedMeanMicroseconds()
double calibratedMedianMicroseconds()
double clockNowOverhead() const
bool continualCalibration() const
virtual void copyInfo()
void copySamples(long& count, double *&) const
double correlationMicroseconds() const
bool correlationTooLarge() const
double errorMicroseconds() const
bool errorTooLarge() const
ITimingTest(const ITimingTest& source)
double maximumAllowedMedianMicroseconds() const
unsigned long maximumSampleWindows() const
double minimumSampleCorrelation() const
ITimingTest& operator =(const ITimingTest& rhs)
double relativeErrorMicroseconds() const
unsigned long sampleCount() const
unsigned long samplesDiscarded() const
unsigned long samplesTaken() const
void setAutomaticSampleTolerance(double tolerance)
void setAutomaticSampling(bool doAutomaticSampling)
void setContinualCalibration(bool continuallyCalibrate)
void setMaximumAllowedMedianMicroseconds(double timeLimit)
void setMaximumSampleWindows(unsigned long maxWindows)
void setMinimumSampleCorrelation(double minSampleCorr)
void setSampleCount(unsigned long sampleCount)
void setTimingCount(unsigned long timingCount)
void setTimingOn(bool timingOn)
unsigned long timingCount() const
bool timingOn() const
static const IString & _Import kComponentKey
static const IString& kComponentKey
static const IString & _Import kDescriptionKey
static const IString& kDescriptionKey
static const IString& kInputSyntaxKey
static const IString & _Import kInputSyntaxKey
static const IString& kTargetClassKey
static const IString & _Import kTargetClassKey
static const IString& kTestNameKey
static const IString & _Import kTestNameKey
static const IString& kTestTypeKey
static const IString & _Import kTestTypeKey
static const IString& kTestVersionKey
static const IString & _Import kTestVersionKey
static const double kDefaultAutomaticSamplingTolerance
static const double kDefaultMinimumCorrelation
virtual void addInfo(const IString&, const IString&)
virtual bool isReset() const
virtual bool isSuccessUndecided() const
ITest()
ITest(const ITest& test)
virtual void print(ITieredTextBuffer&)
virtual void reset()
virtual void setStickySuccess(bool success)
virtual void setSuccess(bool success)
virtual void test() = 0
virtual void cleanup()
ITimingTest( unsigned long timingCount,
unsigned long sampleCount )
ITimingTest()
virtual void print(ITieredTextBuffer& out)
virtual void setup()
virtual void test()
virtual void timingCleanup()
virtual void timingSetup()
virtual void timingTest() = 0