Author: jukka Date: Fri Jan 15 20:41:13 2010 New Revision: 899804 URL: http://svn.apache.org/viewvc?rev=899804&view=rev Log: PDFBOX-604: Various text extraction performance improvements
Avoid duplicate has lookups in PDSimpleFont.getFontWidth() Modified: pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java Modified: pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java?rev=899804&r1=899803&r2=899804&view=diff ============================================================================== --- pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java (original) +++ pdfbox/trunk/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java Fri Jan 15 20:41:13 2010 @@ -46,7 +46,9 @@ */ public abstract class PDSimpleFont extends PDFont { - private HashMap mFontSizes = new HashMap(128); + private final HashMap<Integer, Float> mFontSizes = + new HashMap<Integer, Float>(128); + private float avgFontWidth = 0.0f; /** @@ -146,16 +148,9 @@ */ public float getFontWidth( byte[] c, int offset, int length ) throws IOException { - float fontWidth = 0; int code = getCodeFromArray( c, offset, length ); - - Integer codeI = new Integer(code); - if (mFontSizes.containsKey(codeI)) - { - Float fontWidthF = (Float) mFontSizes.get(codeI); - fontWidth = fontWidthF.floatValue(); - } - else + Float fontWidth = mFontSizes.get(code); + if (fontWidth == null) { //hmm should this be in a subclass?? COSInteger firstChar = (COSInteger)font.getDictionaryObject( COSName.FIRST_CHAR ); @@ -179,7 +174,7 @@ { fontWidth = getFontWidthFromAFMFile( code ); } - mFontSizes.put(codeI, new Float(fontWidth)); + mFontSizes.put(code, fontWidth); } return fontWidth; }