[dahdi-commits] sruffell: tools/trunk r10216 - /tools/trunk/dahdi_test.c
SVN commits to the DAHDI project
dahdi-commits at lists.digium.com
Thu Sep 29 12:01:02 CDT 2011
Author: sruffell
Date: Thu Sep 29 12:00:59 2011
New Revision: 10216
URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=10216
Log:
dahdi_test: Enforce range from 0.0% - 100.0% for accuracy.
Also makes sure that the percentage output from the verbose and
non-verbose modes of timer_test are the same and print a cumulative
accuracy which smooths out the jitter for each pass.
If the time it takes to read in 1 second worth of data is longer than 1
second accuracy will be 0%.
(closes issue #18573)
Reported by: smurfix
Signed-off-by: Shaun Ruffell <sruffell at digium.com>
Modified:
tools/trunk/dahdi_test.c
Modified: tools/trunk/dahdi_test.c
URL: http://svnview.digium.com/svn/dahdi/tools/trunk/dahdi_test.c?view=diff&rev=10216&r1=10215&r2=10216
==============================================================================
--- tools/trunk/dahdi_test.c (original)
+++ tools/trunk/dahdi_test.c Thu Sep 29 12:00:59 2011
@@ -40,17 +40,32 @@
#define SIZE 8000
+static int verbose;
static int pass = 0;
static float best = 0.0;
static float worst = 100.0;
static double total = 0.0;
-static double delay_total = 0.0;
+static double total_time = 0.0;
+static double total_count = 0.0;
+
+static inline float _fmin(float a, float b)
+{
+ return (a < b) ? a : b;
+}
+
+static double calculate_accuracy(double count, double ms)
+{
+ return ((count - _fmin(count, fabs(count - ms))) / count) * 100.0;
+}
void hup_handler(int sig)
{
+ double accuracy = calculate_accuracy(total_count, total_time);
printf("\n--- Results after %d passes ---\n", pass);
- printf("Best: %.3f -- Worst: %.3f -- Average: %f, Difference: %f\n",
- best, worst, pass ? total/pass : 100.00, pass ? delay_total/pass : 100);
+ printf("Best: %.3f%% -- Worst: %.3f%% -- Average: %f%%\n",
+ best, worst, pass ? total/pass : 100.00);
+ printf("Cummulative Accuracy (not per pass): %0.3f\n",
+ pass ? accuracy : 0.0);
exit(0);
}
@@ -79,9 +94,7 @@
int count = 0;
int seconds = 0;
int curarg = 1;
- int verbose = 0;
char buf[8192];
- float score;
float ms;
struct timeval start, now;
fd = open("/dev/dahdi/pseudo", O_RDWR);
@@ -140,23 +153,23 @@
ms += (now.tv_sec - start.tv_sec) * 8000;
ms += (now.tv_usec - start.tv_usec) / 125.0;
if (count >= SIZE) {
- double percent = 100.0 * (count - ms) / count;
+ const double percent = calculate_accuracy(count, ms);
if (verbose) {
printf("\n%d samples in %0.3f system clock sample intervals (%.3f%%)",
- count, ms, 100 - percent);
+ count, ms, percent);
} else if (pass > 0 && (pass % 8) == 0) {
printf("\n");
}
- score = 100.0 - fabs(percent);
- if (score > best)
- best = score;
- if (score < worst)
- worst = score;
+ if (percent > best)
+ best = percent;
+ if (percent < worst)
+ worst = percent;
if (!verbose)
- printf("%.3f%% ", score);
- total += score;
- delay_total += 100 - percent;
+ printf("%.3f%% ", percent);
+ total += percent;
fflush(stdout);
+ total_count += count;
+ total_time += ms;
count = 0;
pass++;
}
More information about the dahdi-commits
mailing list