Author: alanmc
Date: 2007-03-25 12:12:05 -0500 (Sun, 25 Mar 2007)
New Revision: 74962

Modified:
   trunk/mcs/class/System/System.Net/ChangeLog
   trunk/mcs/class/System/System.Net/IPAddress.cs
Log:
Further optimisation for the Swap*** methods. SwapLong is now twice as fast as 
the initial method.

Modified: trunk/mcs/class/System/System.Net/ChangeLog
===================================================================
--- trunk/mcs/class/System/System.Net/ChangeLog 2007-03-25 16:23:36 UTC (rev 
74961)
+++ trunk/mcs/class/System/System.Net/ChangeLog 2007-03-25 17:12:05 UTC (rev 
74962)
@@ -1,3 +1,7 @@
+2007-03-25 Alan McGovern <[EMAIL PROTECTED]>
+
+       * IPAddress.cs : Further optimisation for the Swap*** methods.
+
 2007-03-24 Alan McGovern <[EMAIL PROTECTED]>
 
        * IPAddress.cs : Optimised the SwapInt and SwapLong methods.

Modified: trunk/mcs/class/System/System.Net/IPAddress.cs
===================================================================
--- trunk/mcs/class/System/System.Net/IPAddress.cs      2007-03-25 16:23:36 UTC 
(rev 74961)
+++ trunk/mcs/class/System/System.Net/IPAddress.cs      2007-03-25 17:12:05 UTC 
(rev 74962)
@@ -58,28 +58,28 @@
 
                private static short SwapShort (short number)
                {
-                       return (short) ( ((number >> 8) & 0xFF) + ((number << 
8) & 0xFF00) );
+                       return (short) ( ((number >> 8) & 0xFF) | ((number << 
8) & 0xFF00) );
                }
 
                private static int SwapInt (int number)
                {
-                       return ((number >> 24) & 0xFF)
-                               + (((number >> 16) & 0xFF) << 8)
-                               + (((number >> 8) & 0xFF) << 16)
-                               + ((number & 0xFF) << 24);
+                       return (((number >> 24) & 0xFF)
+                                 | ((number >> 08) & 0xFF00)
+                                 | ((number << 08) & 0xFF0000)
+                                 | ((number << 24)));
                }
 
-        private static long SwapLong(long number)
-        {
-            return (((number >> 56) & 0xFF)
-                + (((number >> 48) & 0xFF) << 8)
-                + (((number >> 40) & 0xFF) << 16)
-                + (((number >> 32) & 0xFF) << 24)
-                + (((number >> 24) & 0xFF) << 32)
-                + (((number >> 16) & 0xFF) << 40)
-                + (((number >> 8) & 0xFF) << 48)
-                + ((number & 0xFF) << 56));
-        }
+               private static long SwapLong(long number)
+               {
+                       return (((number >> 56) & 0xFF)
+                                 | ((number >> 40) & 0xFF00)
+                                 | ((number >> 24) & 0xFF0000)
+                                 | ((number >> 08) & 0xFF000000)
+                                 | ((number << 08) & 0xFF00000000)
+                                 | ((number << 24) & 0xFF0000000000)
+                                 | ((number << 40) & 0xFF000000000000)
+                                 | ((number << 56)));
+               }
 
                public static short HostToNetworkOrder(short host) {
                        if (!BitConverter.IsLittleEndian)

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to