]> Creatis software - gdcm.git/commitdiff
Just to see, on the Dashbord (Linux+Windows) whether inline has an effect or
authorjpr <jpr>
Fri, 21 Sep 2007 13:34:09 +0000 (13:34 +0000)
committerjpr <jpr>
Fri, 21 Sep 2007 13:34:09 +0000 (13:34 +0000)
not.
(not any, on by PC ...)

Testing/CMakeLists.txt
Testing/TestInline.cxx

index 8a279fecb4a95bb03ef55a87a9ff3b39da08eb21..5f7fcefd84604c557880467a92ace0e40e9968b3 100644 (file)
@@ -25,11 +25,11 @@ SET(TEST_SOURCES
   TestEnumVR.cxx
   TestBuildUpDicomDir.cxx          # writes a file named "NewDICOMDIR"
 )
-IF(UNIX)
+IF(UNIX OR WIN32)
   SET(TEST_SOURCES ${TEST_SOURCES}
     TestInline.cxx
   )
-ENDIF(UNIX)
+ENDIF(UNIX OR WIN32)
 
 # add tests that require data
 IF (GDCM_DATA_ROOT)
index 5b3bcf9ef6d645073cc0f6e819cae6f593b47366..669c0ea50433b6621f3ac42aacf15df9406bd23a 100755 (executable)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: TestInline.cxx,v $
   Language:  C++
-  Date:      $Date: 2007/09/20 12:48:21 $
-  Version:   $Revision: 1.12 $
+  Date:      $Date: 2007/09/21 13:34:09 $
+  Version:   $Revision: 1.13 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -20,7 +20,7 @@
 // - with a macro : this is the quicker (any doubt ?)
 // - with a function, passing the params by pointer
 // - with a function, passing the params by reference (exactly same time)
-// - with an inline function described in the main()
+// - with an inline function described in the .cxx
 //                                                   absolutely NO effect ?!?
 // - with a function, described in the .h
 //                                                   absolutely NO effect ?!?
 
 #include "gdcmUtil.h"
 
+#ifdef _MSC_VER
+#include <time.h>
+#define GET_TIME(a) a=clock()
+#define HOW_LONG(b,a)                             \
+   std::cout  << (double) (b-a)  << std::endl  
+#else
 #include <sys/times.h>
+#define GET_TIME(a)  times(&a)
+#define HOW_LONG(b,a)                             \
+   std::cout                                      \
+        << (long) ((b.tms_utime) - (a.tms_utime)) \
+        << std::endl  
+#endif
+
 #include <iostream>
 
 void        frswap (double &a, double &b);
@@ -63,13 +76,14 @@ mswap(a, b)       \
    b   = tmp;     \
 }
 
+//  ============= no inline
+
 void frswap(double &a, double &b)
 {
    double tmp;
    tmp = a;
    a   = b;
    b   = tmp;
-
 }
 
 void fpswap(double *a, double *b)
@@ -78,9 +92,10 @@ void fpswap(double *a, double *b)
    tmp = *a;
    *a  = *b;
    *b  = tmp;
-
 }
 
+//  ============= inline
+
 inline void ifpswap(double *a, double *b)
 {
    double tmp;
@@ -166,17 +181,35 @@ double passDirectDouble(double a, double b)
 
 int TestInline(int argc, char *argv[])
 {
+
+#ifdef _MSC_VER
+   clock_t tms1, tms2;
+#else
+   struct tms tms1, tms2;
+#endif
+
+// ====================================================================
+
    std::cout << std::endl << std::endl
-             << "Just to be sure : sizes of native types" 
+             << "Just to be sure : sizes of native types" << std::endl
+             << "======================================="      
              << std::endl << std::endl;
    // just to know, on every proc
+   std::cout << "Size of char      " << sizeof(char)      << std::endl;   
    std::cout << "Size of short int " << sizeof(short int) << std::endl;
-   std::cout << "Size of int  "      << sizeof(int)       << std::endl;
-   std::cout << "Size of long "      << sizeof(long)      << std::endl;
-   std::cout << "Size of float"      << sizeof(float)     << std::endl;
-   std::cout << "Size of double"     << sizeof(double)    << std::endl;
-   std::cout << "Size of int* "      << sizeof(int*)      << std::endl;
-   std::cout <<  "-----------------" << std::endl;
+   std::cout << "Size of int       " << sizeof(int)       << std::endl;
+   std::cout << "Size of long      " << sizeof(long)      << std::endl;
+   std::cout << "Size of float     " << sizeof(float)     << std::endl;
+   std::cout << "Size of double    " << sizeof(double)    << std::endl;
+   std::cout << std::endl;
+   std::cout << "Size of char*     " << sizeof(char*)     << std::endl;
+   std::cout << "Size of short int*" << sizeof(short int*)<< std::endl;
+   std::cout << "Size of int*      " << sizeof(int*)      << std::endl;
+   std::cout << "Size of double*   " << sizeof(double*)   << std::endl;
+   std::cout <<  "-----------------" << std::endl;   
+   
+ // ====================================================================
+    
    unsigned int nbLoop; 
    unsigned int i;
       
@@ -185,448 +218,360 @@ int TestInline(int argc, char *argv[])
    else
       nbLoop = 100000000;
 
-   //clock_t r1, r2;
-   struct tms tms1, tms2;
-   
-   double a = 1, b = 2;
-   
-   std::cout << "Exchange 2 scalars " << nbLoop << " times"
-             << std::endl << std::endl;
    uint8_t  x8 =1, y8 =2;    
    uint16_t x16=1, y16=2;    
    uint32_t x32=1, y32=2;    
    float  fx =1.0f, fy=1.0f;
    double dx =1.0 , dy=1.0;
- // ----------------------------------------
-   std::cout << "Direct "<< std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-   for(i = 0 ; i< nbLoop ; i++)
-   {
-      double tmp;
-      tmp=a;
-      a=b;
-      b=tmp;
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-    std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl;
-   
- // ----------------------------------------
-   std::cout << "Use a macro "<< std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-   for(i = 0 ; i< nbLoop ; i++)
-   {
-      mswap (a,b);  
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-    std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl;
-   
- // ----------------------------------------
-   std::cout << "Use reference function" << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
-   {
-      frswap (a,b);  
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
-   
- // ----------------------------------------
-  
-   std::cout << "Use pointer function" << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
-   {
-      fpswap (&a, &b);  
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl;  
-   
- // ----------------------------------------
-   std::cout << "Use inline, main-defined reference function" << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
-   {
-      ifrswap (a, b);  
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl;    
-   
- // ----------------------------------------
-   std::cout << "Use inline, main-defined pointer function" << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
-   {
-      ifpswap (&a, &b);  
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl;
-
- // ----------------------------------------
-  
-//To check the 2 following cases, we just put the two 'static' functions
-//hifpswap and  hNoifpswap in gdcmUtil.h
-    
-   std::cout << "Use inline, .h defined, WITH inline keyword pointer method"
-             << std::endl;
-   //r1 = times(&tms1);
-   gdcm::Util util;
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
-   {
-      util.hifpswap (&a, &b);
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl;  
-
+   double a = 1, b = 2;
    
- // ----------------------------------------
-
-   std::cout << "Use inline, .h defined, NO inline keyword pointer method"
-             << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
-   {
-      util.hNoifpswap (&a, &b);
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
-
- // ----------------------------------------
-
-   std::cout << "Use , .h defined, NO inline keyword pointer method"
-             << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
-   {
-      util.hfpswap (&a, &b);
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime))
-        <<std::endl;
+ // ====================================================================
  
- // ----------------------------------------
-
-   std::cout << "Use inline, .h defined, WITH inline keyword pointer static method"
-             << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
-   {
-      gdcm::Util::sthifpswap (&a, &b);
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl;  
-
-   
- // ----------------------------------------
-
-   std::cout << "Use inline, .h defined, NO inline keyword pointer static method"
-             << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
-   {
-      gdcm::Util::sthNoifpswap (&a, &b);
-   }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
-
-
- // ----------------------------------------
    std::cout << std::endl << std::endl
-             << "Check different ways of passing scalars to a function, " 
-             << nbLoop << " times" << std::endl << std::endl; 
+             << "Check different ways of passing scalars to a function "<< nbLoop << " times"  << std::endl
+             << "=====================================================" 
+             << std::endl << std::endl; 
     
    std::cout << "Pass uint_8 param directly"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);    
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passDirect8 (x8, y8);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
  
    std::cout << "Pass uint_8 param as ref"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);  
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passRef8 (x8, y8);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
  
    std::cout << "Pass uint_8 param as ptr"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);  
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passPtr8 (&x8, &y8);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
    std::cout << std::endl;
    std::cout << "Pass uint_16 param directly"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);   
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passDirect16 (x16, y16);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
  
    std::cout << "Pass uint_16 param as ref"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);   
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passRef16 (x16, y16);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
  
    std::cout << "Pass uint_16 param as ptr"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);   
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passPtr16 (&x16, &y16);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
-
-
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
    std::cout << std::endl;
    std::cout << "Pass uint_32 param directly"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);  
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passDirect32 (x32, y32);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
  
    std::cout << "Pass uint32_t param as ref"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);    
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passRef32 (x32, y32 );  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
  
    std::cout << "Pass uint_32 param as ptr"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);    
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passPtr32 (&x32, &y32);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
    std::cout << std::endl; 
    std::cout << "Pass float param directly"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);   
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passDirectFloat (fx, fy);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
  
    std::cout << "Pass float param as ref"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);    
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passRefFloat (fx, fy);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
  
    std::cout << "Pass float param as ptr"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);   
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passPtrFloat (&fx, &fy);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
    std::cout << std::endl; 
    std::cout << "Pass double param directly"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);   
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passDirectDouble (dx, dy);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
  // ----------------------------------------
  
    std::cout << "Pass double param as ref"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);  
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passRefDouble (dx, dy);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
-
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
-
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
  // ----------------------------------------
  
    std::cout << "Pass double param as ptr"
              << std::endl;
-   //r1 = times(&tms1);
-   times(&tms1);   
-    for(i = 0 ; i< nbLoop ; i++)
+
+   GET_TIME(tms1);  
+   for(i = 0 ; i< nbLoop ; i++)
    {
       passPtrDouble (&dx, &dy);  
    }
-   //r2 = times(&tms2);
-   times(&tms2);   
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
+
+// ====================================================================
+  
+   std::cout << std::endl;
+   std::cout << "Exchange 2 scalars " << nbLoop << " times" << std::endl
+             << "==================="
+             << std::endl << std::endl;
+    
+ // ----------------------------------------
+   std::cout << "Direct "<< std::endl;
+
+   GET_TIME(tms1);   
+   for(i = 0 ; i< nbLoop ; i++)
+   {
+      double tmp;
+      tmp=a;
+      a=b;
+      b=tmp;
+   }
+   GET_TIME(tms2);
+   HOW_LONG(tms2,tms1);  
+
+   
+ // ----------------------------------------
+   std::cout << "Use a macro "<< std::endl;
+
+   GET_TIME(tms1);   
+   for(i = 0 ; i< nbLoop ; i++)
+   {
+      mswap (a,b);  
+   }
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);  
+   
+ // ----------------------------------------
+   std::cout << std::endl;  
+   std::cout << "Use a function, param passed by reference" << std::endl;
+
+   GET_TIME(tms1);    
+   for(i = 0 ; i< nbLoop ; i++)
+   {
+      frswap (a,b);  
+   }
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1); 
+   
+ // ----------------------------------------
+  
+   std::cout << "Use a function, param passed by pointer" << std::endl;
+
+   GET_TIME(tms1);  ;   
+   for(i = 0 ; i< nbLoop ; i++)
+   {
+      fpswap (&a, &b);  
+   }
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1); 
+   
+ // ----------------------------------------
+   std::cout << std::endl;
+   std::cout << "Use inline, .cxx-defined function, param passed by reference" << std::endl;
+
+   GET_TIME(tms1);  
+   for(i = 0 ; i< nbLoop ; i++)
+   {
+      ifrswap (a, b);  
+   }
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
+   
+ // ----------------------------------------
+   std::cout << "Use inline, .cxx-defined function, param passed by pointer" << std::endl;
+
+   GET_TIME(tms1);     
+   for(i = 0 ; i< nbLoop ; i++)
+   {
+      ifpswap (&a, &b);  
+   }
+   GET_TIME(tms2);
+   HOW_LONG(tms2,tms1);
+
+ // ----------------------------------------
+
+   std::cout << std::endl;
+     
+//To check the 2 following cases, we just put the two 'static' functions
+//hifpswap and  hNoifpswap in gdcmUtil.h
+    
+   std::cout << "Use inline, .h defined, WITH inline keyword, param passed by pointer"
+             << std::endl;
+
+   gdcm::Util util;
+
+   GET_TIME(tms1);    
+   for(i = 0 ; i< nbLoop ; i++)
+   {
+      util.hifpswap (&a, &b);
+   }
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
+
+   
+ // ----------------------------------------
+
+   std::cout << "Use inline, .h defined, NO inline keyword, param passed by pointer"
+             << std::endl;
+
+   GET_TIME(tms1);     
+   for(i = 0 ; i< nbLoop ; i++)
+   {
+      util.hNoifpswap (&a, &b);
+   }
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
+
+ // ----------------------------------------
+   std::cout << std::endl;
+   
+   std::cout << "Use inline, .h defined, WITH inline keyword, param passed by pointer STATIC function"
+             << std::endl;
+
+   GET_TIME(tms1);   
+   for(i = 0 ; i< nbLoop ; i++)
+   {
+      gdcm::Util::sthifpswap (&a, &b);
+   }
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
+   
+ // ----------------------------------------
+
+   std::cout << "Use inline, .h defined, NO inline keyword, param passed by pointer STATIC function"
+             << std::endl;
+
+   GET_TIME(tms1);    
+   for(i = 0 ; i< nbLoop ; i++)
+   {
+      gdcm::Util::sthNoifpswap (&a, &b);
+   }
+   GET_TIME(tms2);   
+   HOW_LONG(tms2,tms1);
 
-   std::cout 
-        << (long) ((tms2.tms_utime)  - (tms1.tms_utime)) 
-        << std::endl; 
 
    return 0;
 }