Introduction to the New Calculation Engine

  • Last update:September 19, 2025
  • Overview

    Version

    Report Server Version
    Functional Change
    11.0

    /

    11.0.2

    • Added Preferential Use of Cursor Pagination in Calculation Attribute.

    • Added Pagination by Fixed Row Quantity.

    • Added Row Quantity Summary.

    • Supported the display of the total number of pages during template preview after Pagination by Fixed Row Quantity is enabled.

    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

    iconNote:
    The new calculation engine only applies to general reports in the Pagination Preview mode.


    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.

    iconNote:
    The following data sources are supported: MySQL, Alibaba Cloud AnalyticDB, Huawei Hive, CUBRID, Apache Derby, Firebird, H2, SQLite, HSQLDB, MariaDB, PostgreSQL, SAP HANA, Oracle Database, Teradata, Microsoft SQL Server, Microsoft SQL Server 2000, Microsoft SQL Server 2008, Microsoft Access, SAP ASE, IBM Informix, Ingres, Amazon Redshift, Vertica, Apache Phoenix, Apache Kylin, Apache Impala, GBase 8s, Transwarp Inceptor, IBM Db2, Sybase, Greenplum database, and FineData.

    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.

    • Headers and footers

    iconNote:

    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 EngineThe 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.

     gif1.gif

    Function Guide

    Attachment List


    Theme: Performance Optimization
    Already the First
    Already the Last
    • Helpful
    • Not helpful
    • Only read

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    10s後關閉

    Get
    Help
    Online Support
    Professional technical support is provided to quickly help you solve problems.
    Online support is available from 9:00-12:00 and 13:30-17:30 on weekdays.
    Page Feedback
    You can provide suggestions and feedback for the current web page.
    Pre-Sales Consultation
    Business Consultation
    Business: international@fanruan.com
    Support: support@fanruan.com
    Page Feedback
    *Problem Type
    Cannot be empty
    Problem Description
    0/1000
    Cannot be empty

    Submitted successfully

    Network busy