Fix test_looplen, use double-precition arithmetic
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sat, 13 Jun 2009 23:53:05 +0000 (19:53 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Sat, 13 Jun 2009 23:53:05 +0000 (19:53 -0400)
Here you go!!!

        [root@perfsqh userspace-rcu]# ./test_looplen
        CALIBRATION : 0 cycles per loop

Hmmm...  Probably not what you had in mind.  Breaking out the
floating-point arithmetic:

        [root@perfsqh userspace-rcu]# ./test_looplen
        CALIBRATION : 0.386172 cycles per loop
        time_tot = 4049312, LOOPS = 1048576, TESTS = 10

More helpful?  ;-)

                                                Thanx, Paul

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
test_looplen.c

index 86d03863430b844a1a7c1998c0c10b9967bf1b54..e07409a64ca5ba61542ff8e6328894819fdd4765 100644 (file)
@@ -71,6 +71,7 @@ int main(int argc, char **argv)
        unsigned long i;
        cycles_t time1, time2;
        cycles_t time_tot = 0;
+       double cpl;
 
        for (i = 0; i < TESTS; i++) {
                time1 = get_cycles();
@@ -78,10 +79,11 @@ int main(int argc, char **argv)
                time2 = get_cycles();
                time_tot += time2 - time1;
        }
-       time_tot /= TESTS;
-       time_tot /= LOOPS;
+       cpl = ((double)time_tot) / (double)TESTS / (double)LOOPS;
 
-       printf("CALIBRATION : %llu cycles per loop\n", time_tot);
+       printf("CALIBRATION : %g cycles per loop\n", cpl);
+       printf("time_tot = %llu, LOOPS = %d, TESTS = %d\n",
+              time_tot, LOOPS, TESTS);
 
        return 0;
 }
This page took 0.025766 seconds and 4 git commands to generate.