Переглянути джерело

Fix the bandwith computing when a longer delay is measured

- use milliseconds instead of microseconds
- increase the number of loops to 100 000 from 10 000
Stéphane Raimbault 16 роки тому
батько
коміт
795d1fd71d
1 змінених файлів з 17 додано та 16 видалено
  1. 17 16
      tests/bandwidth-master.c

+ 17 - 16
tests/bandwidth-master.c

@@ -26,15 +26,16 @@
 
 /* Tests based on PI-MBUS-300 documentation */
 #define SLAVE     0x11
-#define NB_LOOPS  10000
+#define NB_LOOPS  100000
 
-#define G_USEC_PER_SEC 1000000
-uint32_t gettime(void)
+#define G_MSEC_PER_SEC 1000
+
+uint32_t gettime_ms(void)
 {
         struct timeval tv;
         gettimeofday (&tv, NULL);
 
-        return (uint32_t) tv.tv_sec * G_USEC_PER_SEC + tv.tv_usec;
+        return (uint32_t) tv.tv_sec * 1000 + tv.tv_usec / 1000;
 }
 
 int main(void)
@@ -69,20 +70,20 @@ int main(void)
         printf("READ COIL STATUS\n\n");
 
         nb_points = MAX_STATUS;
-        start = gettime();
+        start = gettime_ms();
         for (i=0; i<NB_LOOPS; i++) {
                 ret = read_coil_status(&mb_param, SLAVE, 0, nb_points, tab_rp_status);
         }
-        end = gettime();
-        elapsed = (end - start) / 1000;
+        end = gettime_ms();
+        elapsed = end - start;
 
-        rate = (NB_LOOPS * nb_points) * G_USEC_PER_SEC / (end - start);
+        rate = (NB_LOOPS * nb_points) * G_MSEC_PER_SEC / (end - start);
         printf("Transfert rate in points/seconds:\n");
         printf("* %'d points/s\n", rate);
         printf("\n");
 
         bytes = NB_LOOPS * (nb_points / 8) + ((nb_points % 8) ? 1 : 0);
-        rate = bytes / 1024 * G_USEC_PER_SEC / (end - start);
+        rate = bytes / 1024 * G_MSEC_PER_SEC / (end - start);
         printf("Values:\n");
         printf("* %d x %d values\n", NB_LOOPS, nb_points);
         printf("* %.3f ms for %d bytes\n", elapsed, bytes);
@@ -94,7 +95,7 @@ int main(void)
         printf("Values and TCP Modbus overhead:\n");
         printf("* %d x %d bytes\n", NB_LOOPS, bytes);
         bytes = NB_LOOPS * bytes;
-        rate = bytes / 1024 * G_USEC_PER_SEC / (end - start);
+        rate = bytes / 1024 * G_MSEC_PER_SEC / (end - start);
         printf("* %.3f ms for %d bytes\n", elapsed, bytes);
         printf("* %'d KiB/s\n", rate);
         printf("\n\n");
@@ -102,20 +103,20 @@ int main(void)
         printf("READ HOLDING REGISTERS\n\n");
 
         nb_points = MAX_REGISTERS;
-        start = gettime();
+        start = gettime_ms();
         for (i=0; i<NB_LOOPS; i++) {
                 ret = read_holding_registers(&mb_param, SLAVE, 0, nb_points, tab_rp_registers);
         }
-        end = gettime();
-        elapsed = (end - start) / 1000;
+        end = gettime_ms();
+        elapsed = end - start;
 
-        rate = (NB_LOOPS * nb_points) * G_USEC_PER_SEC / (end - start);
+        rate = (NB_LOOPS * nb_points) * G_MSEC_PER_SEC / (end - start);
         printf("Transfert rate in points/seconds:\n");
         printf("* %'d registers/s\n", rate);
         printf("\n");
 
         bytes = NB_LOOPS * nb_points * sizeof(uint16_t);
-        rate = bytes / 1024 * G_USEC_PER_SEC / (end - start);
+        rate = bytes / 1024 * G_MSEC_PER_SEC / (end - start);
         printf("Values:\n");
         printf("* %d x %d values\n", NB_LOOPS, nb_points);
         printf("* %.3f ms for %d bytes\n", elapsed, bytes);
@@ -127,7 +128,7 @@ int main(void)
         printf("Values and TCP Modbus overhead:\n");
         printf("* %d x %d bytes\n", NB_LOOPS, bytes);
         bytes = NB_LOOPS * bytes;
-        rate = bytes / 1024 * G_USEC_PER_SEC / (end - start);
+        rate = bytes / 1024 * G_MSEC_PER_SEC / (end - start);
         printf("* %.3f ms for %d bytes\n", elapsed, bytes);
         printf("* %'d KiB/s\n", rate);
         printf("\n");