+ 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);