Jump to content
We've recently updated our Privacy Statement, available here ×

Textfield rendering performance optimisation


steve.cowx

Recommended Posts

Hi All

 

Our application renders tens of thousands of telephone bills into pdf format using Jasper Reports. We are currently using version 1.2.2, I will be testing with version 1.5.2 later today but I don't expect to see massive differences between the versions based on what I have read in the changelogs.

 

Performance is a very important issue for us.

 

Each bill that we render is made up of the same basic information (name, address, account number etc) and then a large number of itemised telephone calls. Medium sized business bills can run to 150-200 pages of itemised calls. In the report design, each itemisation line is made up of around 6 textfields with information from our database.

 

We have been profiling our code and the reporting code in order to see where we can optimise the processing to shave valuable seconds off the time it takes to render each telephone bill.

 

What we have found is that JasperReports spends 47% of the total processing time in the TextMeasurer.renderParagraph method. The time in the renderParagraph method can be further analysed to show that it is mainly used up by the java.awt.font.LineBreakMeasurer.

 

It does makes sense that most of the rendering time is spent on rendering text fields (as the bills are almost entirely text) but seeing as this is the single most often performed function in the rendering (in our case) we would like to find ways of optimising it.

 

Here is my question:

 

Is there any way to optimise the text rendering by using particular settings for textfields in the report design. We know the fields will be a specific length, we know they will never need to be wrapped, they will always be the same font and all the characters within each of the fields will all have the same attribites. Small savings on each text field can make a massive difference when we are rendering large volumes of data so a saving of even 1 or 2 seconds per report would be significant.

 

Regards

 

Stephen

Link to comment
Share on other sites

  • Replies 1
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Hi,

 

I think this is something we could do in the future.

There is a patch that we now track here:

http://jasperforge.org/sf/go/artf1451?nav=1

which also proposed a custom implementation of a LineBreakMeasurer to avoid rendering problems on machines without full AWT support.

 

It would be great if you could post this as a Feature Request so that we track it better.

 

Thank you,

Teodor

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...