Overview
Version
| Report Server Version | Functional Change |
|---|---|
| 11.0 | / |
11.0.2 |
|
Application Scenario
The loading speed during template preview will slow down with a large amount of data in the template, affecting user experience. FineReport of V11 is equipped with a new built-in calculation engine, which is primarily designed to enhance the performance of CPT templates with large volumes of data in basic report operations, such as grouping, filtering, and summarizing. With the new calculation engine enabled, the loading speed of these templates can be significantly improved.
Implementation Principle
The new calculation engine can preprocess (compile) templates by converting certain template settings into SQL statements for data processing.
Instead of retrieving all data, data is retrieved in batches according to a fixed volume, from the first page up to the current page, while pagination calculations are performed in the backend. (For example, if the current page is page 5, only the data from pages 1 to 5 is retrieved.)
This calculation method is designed to alleviate the pressure caused by large data volumes, prioritizing fast loading and display of the first page.
Application Scope
Note:Supported Functions
Compared to the row-based engine, the new calculation engine additionally supports the following functions:
Cell filtering, and summary by sum
Condition attributes for row height, column width, and hyperlinks
Adaptative layout
Using formulas for the cell content tooltip
Using multiple datasets without filtering relationships
New data sources
The repeating and freezing functions (For templates with the new calculation engine enabled, freezing the end area and pagination by fixed row quantity functions can only be used separately.)
Watermarks
Expanding and collapsing tree nodes. For details, see API Only for Pagination Preview.
Templates that conform to an organizational tree structure and contain tree node buttons can also be displayed as collapsible trees in the pagination preview mode with the new calculation engine enabled.
Note:Currently Unsupported Functions
Due to limitations in the data retrieval and calculation logic of backend pagination, the new calculation engine currently does not support the following functions:
Non-JDBC data sources
Tree datasets, associated datasets, program datasets, and stored procedures Although the tree dataset is used in the collapsible tree setting with the new calculation engine enabled, the tree dataset is not exclusively used for collapsible trees and has other functions that are not supported by the new calculation engine.
Data column sorting. For details, see Sort After Expansion and Advanced Sorting.
If the order by clause is used in the SQL statement, the data previewed in the dataset and the template may be sorted differently.
Custom display in the data column
Hierarchical coordinates, SQL formulas, and report function formulas
Condition attributes for pagination after rows and widgets.
Floating elements, column splitting, and calculation across multiple sheets
Displaying charts in the pagination preview mode
Embedding sub-reports into cells. For details, see Master Report with Embedded Sub-Reports.
Cross-dataset data filtering
Mobile use
After the new calculation engine is enabled, the email option in the toolbar does not support the display of report content in the body during template preview.
The template suffix &__bypagesize__=false. For details about the application scenarios of the suffix parameter, see Data Display Without Pagination.
Note:1. When the above-mentioned unsupported functions are used in templates with the new calculation engine enabled, the log will display an error message saying "unsupported feature." To prevent preview errors in such cases, the system will automatically revert to using the old engine for backend calculation. (This means that these templates will not be improved in performance.)
2. The new calculation engine supports grouping. However, the overall display performance of grouping is lower to that of the list. For better performance, you are advised to set the first column of the template as a list if grouping is not required.
Comparison Between the New and Old Engines
The following table describes the differences in the backend calculation logic between the old and new engines.
| Calculation Logic | The Old Engine | The New Engine |
|---|---|---|
Data column (sorting, filtering, and other operations) | The dataset data can be extracted into the server memory for in-memory filtering. However, when the data volume is large, the out-of-memory error may occur. | Settings can be compiled into SQL statements to be executed by the database. The calculation is faster, with greater performance improvement as the data volume increases. |
On-demand calculation | Not supported. Only full data calculation is supported. | Supported |
Formula parsing and calculation | The speed is slow and dynamic parameter caching is not supported. | Cell relationships are determined in advance through pre-compilation to avoid recursive traversal during calculation. Dynamic parameter caching is supported. |
Data serialization for storage | The template is converted into a single XML file, with resource files translated into strings for storage. When a large number of resource files exist, loading and saving the template will be relatively slow. | The template is a zip file that contains metadata objects, eliminating the need to convert resource files into strings for storage. Even for templates in large size, loading and saving the template remains smooth without stutter. |
Frontend rendering | New frontend rendering is supported. | New frontend rendering is supported. |
The new engine uses stream-based calculation, enabling rapid rendering of the first page. You can click Next to view more data after the first page is displayed, without waiting for all data to be processed. The following figure shows the comparison of report loading speed between the old and new engines.
The left figure shows the effect of the old engine, while the right figure shows the effect of the new engine.

Function Guide
For details about how to enable the new calculation engine, see Usage Instruction to the New Calculation Engine.
For details about performance optimization settings, see Calculation Attribute.
For details about resolving the issue of slow exporting speed of large datasets, see Large Dataset Export with the New Calculation Engine Enabled.
For details about freezing the end row with the new calculation engine enabled, see Freezing the End Row with the New Calculation Engine Enabled.
For details about the example of collapsible trees with the new calculation engine, see Collapsible Tree Setting with the New Calculation Engine.
For details about JavaScript APIs supported by the new calculation engine, see API Only for Pagination Preview.