[ https://issues.apache.org/jira/browse/PDFBOX-2784?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Hewson closed PDFBOX-2784. ------------------------------- > Removing unnecessary object creation > ------------------------------------ > > Key: PDFBOX-2784 > URL: https://issues.apache.org/jira/browse/PDFBOX-2784 > Project: PDFBox > Issue Type: Improvement > Components: FontBox, PDModel > Affects Versions: 2.0.0 > Environment: Ubuntu > Reporter: August Shi > Priority: Minor > Attachments: AFMParser.java, CharMetric.java, FontMetrics.java, > GlyphData.java, PDTrueTypeFont.java > > > I discovered several performance inefficiencies in the current version of the > code. I found these after using PDFReader to open a 10-page PDF and clicking > all the menu items. > First, in org.apache.fontbox.afm.CharMetric, a new ArrayList object is > created and assigned to the instance field "ligatures" upon creation of an > instance. During execution, elements are added into the array, but the > ArrayList itself is never read from. In fact, the getter for the field > "ligatures" is never invoked in the rest of the code. It seems like this > ArrayList object is useless since its data is never actually used. I removed > this field and other corresponding methods to avoid creating a useless > object. I also removed calls to add elements to the "ligatures" field found > in org.apache.fontbox.afm.AFMParser. > Second, in the same AFMParser class, a new BoundingBox object is created and > stored in the field "boundingBox" in an instance of CharMetirc. I looked at > the code and found out that the purpose of creating this object is merely > for calculating the height of the bounding box, as seen in > org.apache.fontbox.afm.FontMetrics. To avoid creating the object, I > introduced a field "boundingBoxHeight" in class CharMetric to store the > information instead of storing the BoundingBox object. I also introduced > getter and setter functions for this new field. I then modified the code in > FontMetrics to invoke this new getter for the height value. I found a similar > "boundingBox" field in org.apache.fontbox.ttf.GlyphData with the same > characteristics (only being used for its height) and added a function to > obtain the BoundingBox's height. Similary, I modified code in > org.apache.pdfbox.pdmodel.font.PDTrueTypeFont to use this height getter > instead of getting the BoundingBox instance. > I will attach all the files that I changed. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org