[ https://issues.apache.org/jira/browse/PDFBOX-4877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17133212#comment-17133212 ]
Alfred commented on PDFBOX-4877: -------------------------------- Oh, and another question is, why do we do if (!Float.isFinite(c[0]) || !Float.isFinite(c[1]) || !Float.isFinite(c[2]) || !Float.isFinite(c[3]) || !Float.isFinite(c[4]) || !Float.isFinite(c[5]) || !Float.isFinite(c[6]) || !Float.isFinite(c[7]) || !Float.isFinite(c[8])) throw new IllegalArgumentException("Multiplying two matrices produces illegal values"); This seems like the kind of validation one would need when creating PDF documents, not when parsing them. Do we really need it here, in the multiply method? Even more, than not needing it, when we parse documents, we would prefer to avoid exceptions. > Matrix class performance improvements > ------------------------------------- > > Key: PDFBOX-4877 > URL: https://issues.apache.org/jira/browse/PDFBOX-4877 > Project: PDFBox > Issue Type: Improvement > Components: Parsing, Text extraction > Affects Versions: 2.0.20, 3.0.0 PDFBox > Reporter: Alfred > Assignee: Andreas Lehmkühler > Priority: Major > Labels: Optimization > Attachments: PDFBOX-4877.patch > > Original Estimate: 1m > Remaining Estimate: 1m > > I am testing text extraction from PDF and profiling the execution. > I found that the third major time consumer is with matrix multiplicaitons. > The Matrix class spends large amounts of time copying results to new > instances. > Also, the if statements are slowing down execution as they kill performance > in modern CPUs. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org