OSDN Git Service

Bits optimization: No need to loop through 64 bits if word is known to be 0
authorhneuer <hanno.neuer@gmail.com>
Mon, 7 Oct 2013 11:22:59 +0000 (13:22 +0200)
committerhneuer <hanno.neuer@gmail.com>
Mon, 7 Oct 2013 11:22:59 +0000 (13:22 +0200)
gdx/src/com/badlogic/gdx/utils/Bits.java

index 7ea009f..1450303 100644 (file)
@@ -137,17 +137,21 @@ public class Bits {
                int bitsLength = bits.length;\r
                if (word >= bitsLength) return -1;\r
                long bitsAtWord = bits[word];\r
-               for (int i = fromIndex & 0x3f; i < 64; i++) {\r
-                       if ((bitsAtWord & (1L << (i & 0x3F))) != 0L) {\r
-                               return (word << 6) + i;\r
+               if (bitsAtWord != 0) {\r
+                       for (int i = fromIndex & 0x3f; i < 64; i++) {\r
+                               if ((bitsAtWord & (1L << (i & 0x3F))) != 0L) {\r
+                                       return (word << 6) + i;\r
+                               }\r
                        }\r
                }\r
                for (word++; word < bitsLength; word++) {\r
                        if (word != 0) {\r
                                bitsAtWord = bits[word];\r
-                               for (int i = 0; i < 64; i++) {\r
-                                       if ((bitsAtWord & (1L << (i & 0x3F))) != 0L) {\r
-                                               return (word << 6) + i;\r
+                               if (bitsAtWord != 0) {\r
+                                       for (int i = 0; i < 64; i++) {\r
+                                               if ((bitsAtWord & (1L << (i & 0x3F))) != 0L) {\r
+                                                       return (word << 6) + i;\r
+                                               }\r
                                        }\r
                                }\r
                        }\r