Another round of optimization, focused on reusing arrays and small objects.
[zxing.git] / core / src / com / google / zxing / oned / UPCEReader.java
index 165f9ad..c67103d 100644 (file)
@@ -46,9 +46,18 @@ public final class UPCEReader extends AbstractUPCEANReader {
       {0x07, 0x0B, 0x0D, 0x0E, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A}
   };
 
-  protected int decodeMiddle(BitArray row, int[] startRange, StringBuffer result) throws ReaderException {
+  private int[] decodeMiddleCounters;
+
+  public UPCEReader() {
+    decodeMiddleCounters = new int[4];
+  }
 
-    int[] counters = new int[4];
+  protected int decodeMiddle(BitArray row, int[] startRange, StringBuffer result) throws ReaderException {
+    int[] counters = decodeMiddleCounters;
+    counters[0] = 0;
+    counters[1] = 0;
+    counters[2] = 0;
+    counters[3] = 0;
     int end = row.getSize();
     int rowOffset = startRange[1];