[
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: [email protected]
For additional commands, e-mail: [email protected]