Improve timing tests with averages

This commit is contained in:
Zach Pomerantz 2016-05-04 12:44:11 -07:00
parent 0f6162d683
commit 3619821b82

View file

@ -131,63 +131,84 @@ const glm::vec3 randVector() {
// Do some basic timing tests and report the results // Do some basic timing tests and report the results
void runTimingTests() { void runTimingTests() {
// How long does it take to make a call to get the time? // How long does it take to make a call to get the time?
const int numTests = 1000000; const int numTimingTests = 3;
int* iResults = (int*)malloc(sizeof(int) * numTests);
float fTest = 1.0;
float* fResults = (float*)malloc(sizeof(float) * numTests);
QElapsedTimer startTime; QElapsedTimer startTime;
float elapsedNSecs; float elapsedNSecs;
float elapsedUSecs; float elapsedUSecs;
qCDebug(interfaceapp, "numTimingTests: %d", numTimingTests);
startTime.start(); startTime.start();
elapsedNSecs = (float)startTime.nsecsElapsed(); elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "QElapsedTimer::nsecElapsed() ns: %f", (double)elapsedNSecs); qCDebug(interfaceapp, "QElapsedTimer::nsecElapsed() ns: %f", (double)elapsedNSecs / numTimingTests);
// Test sleep functions for accuracy // Test sleep functions for accuracy
startTime.start(); startTime.start();
for (int i = 0; i < numTimingTests; i++) {
QThread::msleep(1); QThread::msleep(1);
}
elapsedNSecs = (float)startTime.nsecsElapsed(); elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "QThread::msleep(1) ms: %f", (double)(elapsedNSecs / NSECS_PER_MSEC)); qCDebug(interfaceapp, "QThread::msleep(1) ms: %f", (double)(elapsedNSecs / NSECS_PER_MSEC / numTimingTests));
startTime.start(); startTime.start();
for (int i = 0; i < numTimingTests; i++) {
QThread::sleep(1); QThread::sleep(1);
}
elapsedNSecs = (float)startTime.nsecsElapsed(); elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "QThread::sleep(1) s: %f", (double)(elapsedNSecs / NSECS_PER_MSEC / MSECS_PER_SECOND)); qCDebug(interfaceapp, "QThread::sleep(1) s: %f", (double)(elapsedNSecs / NSECS_PER_MSEC / MSECS_PER_SECOND / numTimingTests));
const int numUsecTests = 1000;
startTime.start(); startTime.start();
for (int i = 0; i < numUsecTests; i++) {
usleep(1); usleep(1);
}
elapsedNSecs = (float)startTime.nsecsElapsed(); elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "usleep(1) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC)); qCDebug(interfaceapp, "usleep(1) (1000x) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC / numUsecTests));
startTime.start(); startTime.start();
for (int i = 0; i < numUsecTests; i++) {
usleep(10); usleep(10);
}
elapsedNSecs = (float)startTime.nsecsElapsed(); elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "usleep(10) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC)); qCDebug(interfaceapp, "usleep(10) (1000x) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC / numUsecTests));
startTime.start(); startTime.start();
for (int i = 0; i < numUsecTests; i++) {
usleep(100); usleep(100);
}
elapsedNSecs = (float)startTime.nsecsElapsed(); elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "usleep(100) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC)); qCDebug(interfaceapp, "usleep(100) (1000x) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC / numUsecTests));
startTime.start(); startTime.start();
for (int i = 0; i < numTimingTests; i++) {
usleep(1000); usleep(1000);
}
elapsedNSecs = (float)startTime.nsecsElapsed(); elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "usleep(1000) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC)); qCDebug(interfaceapp, "usleep(1000) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC / numTimingTests));
startTime.start(); startTime.start();
for (int i = 0; i < numTimingTests; i++) {
usleep(1001);
}
elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "usleep(1001) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC / numTimingTests));
startTime.start();
for (int i = 0; i < numTimingTests; i++) {
usleep(1500); usleep(1500);
}
elapsedNSecs = (float)startTime.nsecsElapsed(); elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "usleep(1500) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC)); qCDebug(interfaceapp, "usleep(1500) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC / numTimingTests));
startTime.start();
usleep(2500);
elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "usleep(2500) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC));
startTime.start(); startTime.start();
usleep(15000); usleep(15000);
elapsedNSecs = (float)startTime.nsecsElapsed(); elapsedNSecs = (float)startTime.nsecsElapsed();
qCDebug(interfaceapp, "usleep(15000) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC)); qCDebug(interfaceapp, "usleep(15000) (1x) us: %f", (double)(elapsedNSecs / NSECS_PER_USEC));
const int numTests = 1000000;
int* iResults = (int*)malloc(sizeof(int) * numTests);
float fTest = 1.0;
float* fResults = (float*)malloc(sizeof(float) * numTests);
// Random number generation // Random number generation
startTime.start(); startTime.start();