Improving document-style report generation performance

You might shorten the time IBM Engineering Lifecycle Optimization - Publishing (PUB) takes to generate an output document-style report by trying these steps.

Procedure

  1. Use lists and paragraphs in your template instead of tables whenever possible.
  2. Replace scripted sorts and filters by native sorts or filters wherever possible. If you are using Engineering Publishing filters in your template, PUB is processing the data from the data source. Instead, use native filters to reallocate the filtering work to the data source application rather than PUB.
  3. Specify authentication types for data sources and templates in the document specification properties.
  4. Minimize the number of requests that PUB have to make from the template to the data source. The fewer requests you have, the less time is required for a document-style report to generate.
    Learn more about data requests: Where you can, minimize the number of data requests that are required. The number of data requests required depends on how you structure your queries on elements at the top-level, whether you use a Data source configuration element, and whether you use filters.
    Table 1. Recommended scenarios
    Recommended scenarios that require the fewest requests Number of requests
    Two containers with queries under a single parent query + Data source configuration element
    A container that has a Data source configuration element, and then a container that has a container and another container.
    1
    Two containers with queries under a single parent container and each have a different filter + Data source configuration element
    A container that has a Data source configuration element , a container with a filter, and another container with a filter.
    2
    Table 2. Alternative scenarios
    Alternative scenarios that require additional requests Number of requests
    Two independent containers that each have a top-level query + Data source configuration element
    A container that has a Data source configuration element, a container, and another container.
    2
    Note: If the total request time is logged greater than the total document-style report generation time, this may happen if data read ahead is set to true, if the data has pagination or if images are being downloaded. The request time reported by PUB is not an absolute value even when it is less than the total document-style report generation time. The request time does not indicate the actual engine processing time due to parallelism in the document-style report generation engine.
  5. Remove output types that you are not using from the document specification.
    See Deleting output formats for more information.
  6. Reduce data duplication.

    It is possible that a test case to be shared by multiple test plans. In the same way, a test script can be shared by multiple test-cases. Generating the document-style report with this structure causes data duplication, which in turn means more memory consumption. A simple way to reduce data duplication is to generate all the test plans, all the test-cases and all the test-scripts only once, grouped and use PUB internal links to refer the artifacts.

  7. Design your document templates and configure document-style report generation process to produce subsets of the desired output.

    When you deal with large amounts of data, it is advisable to split the output in several document-style reports by using filters and template variables.

    Splitting a single large output document-style report into smaller sub document-style reports has several advantages:

    • Each sub document-style report requires less memory than a full document-style report, ensuring that document-style report generation succeeds.
    • Allows the user to regenerate just a part of the data.
    • Even if the document-style report succeeds a 2000 pages, Microsoft Word document is hard to open, manipulate, or print.
  8. Design your document templates and configure document-style report generation to produce orthogonal components of the desired output.

    Whenever possible, split document-style reports as orthogonal components and create inter-document links. With the current IBM Engineering Test Management example of having one document-style report for test plans, one document-style report for test cases, and a third one for test scripts.

  9. Include only the relevant information.

    We often reuse templates, which can contain unwanted information. Unwanted queries and attributes must be removed from the template before reusing. Having multiple attributes-selected results in PUB requesting the attributes from the data source and loading them into memory only to discard it later.

    In the following example, only the text attribute is needed and all the other attributes are loaded in memory.

  10. In Publishing Document Builder, configure the maximum number of parallel document-style report generations based on the machine specification that runs the server and document-style report generation needs.

    The maximum number of concurrent document-style report generation processes should be defined based on following factors:

    • Average document-style report size
    • Average number of users that require parallel document-style report generation.
    • Time required to generate the average document-style report (based on machine specification)

    The recommendation is to set the number of parallel document-style report generations to minimum.

  11. Configure several servers to run the Publishing Document Builder.

    Use multiple servers for deploying Publishing Document Builder and assign users. This ensures that the effort is split between machines, balancing the load, and improving the overall system performance and responsiveness. For more information, see Load-balancing section in Administering Document Builder.