Fine Tunning Elixir Server
The time taken for report generation depends on various factors such as the report complexity, type of datasource, generation format and hardware configuration as well as the network traffic.
In another word, the response time of the report generation will be longer if the network traffic is high. Also, the very first report generation will take considerably longer time than the subsequent as this time utilize for initializing the ReportRuntime object and to warm up the JVM hotspot engine.
For your information, below are some of the areas that you can work on to optimize the report response time:-
- Java Virtual Machine
- Check with your JVM Vendor for the options that are available for optimizing the performance. For example, SUN JDK provide a "-server" option to improve
the performance of the HotSpot and java.awt.headless to reduce the heap size required for the JVM.
- Ensure the right JVM is being used for the hardware platform. For example, if your hardware platform is of 64 bits you will have to use a 64 bit JVM.
- Check with your JVM Vendor for the options that are available for optimizing the performance. For example, SUN JDK provide a "-server" option to improve
the performance of the HotSpot and java.awt.headless to reduce the heap size required for the JVM.
- Optimizing of SQL statement
- To optimize the query performance in your database while generating the reports, instead of using the complex SQL statements or joins on the client side. You can make use of the server side (database server) to manage these complexities to maximum the performance.
Stored procedure is one of the few methods that can be used, Elixir Report allows you to pass stored procedure with parameter to the database server and receive a return result.
For more information, please refer to the User Manual that is shipped together with the product.
- Tune your SQL Statement
- Instead of using "Select * from Table", you should only select the column that are required for the report.
- Derivate the simple calculation field in the database level instead of report level.
- Sorting and grouping is a resource-intensive process especially for large recordset.
To improve the response time for the report generation, instead of doing the sorting and grouping in the report template level.
You should try to sort the data in your database level and select "Already Sorted" while creating the grouping in the report template.
- To optimize the query performance in your database while generating the reports, instead of using the complex SQL statements or joins on the client side. You can make use of the server side (database server) to manage these complexities to maximum the performance.
- Optimizing of Report Template
- Avoid writing long length business logic in template level
- For image, you should always try to store the local file system instead of loading the image through the network
- Reduce the size of the image to be the actual size that is required for display in the report, instead of reading a large image.