Execution time report

I want to know how to send to a label, or a text, the execution time of the report.

Thank you


  • edited September 2017

    Generation phase?  If we take a look at the order of events for generation (http://www.eclipse.org/birt/documentation/integrating/scripting.php), you'll find the following:




    First, we will save the start time in the initialize event.  We first need to detect which phase initialize is called because it's called twice, once for generation and another during rendering.

    if(reportContext.getTaskType() == Packages.org.eclipse.birt.report.engine.api.IEngineTask.TASK_RUN){
    reportContext.setGlobalVariable("startTime", new Date());

    Second, we will take the time at the afterFactory event.  We'll calculate the difference between the end and start time, and save this in a persistent global variable.

    var elapsedTime = new Date() - reportContext.getGlobalVariable ("startTime");
    reportContext.setPersistentGlobalVariable ("reportRenderTime", elapsedTime.toString());

    // This debugging is only available in commercial BIRT
    // Messages will appear in the Eclipse > Error Log window
    //var logger = java.util.logging.Logger.getLogger("birt.report.logger");
    //logger.warning ( elapsedTime ); // Time in milliseconds

    Finally, we'll insert a label into the report, and modify its onRender event.  We will write out the elapsed time in milliseconds in the label's text.

    this.text = 'Report generation time (ms): ' + reportContext.getPersistentGlobalVariable("reportRenderTime");

    This report was tested in OS BIRT 3.7.2, and in iHub 16.2.


    Clement Wong
    Principal Analytics Architect

    OpenText Corporation
    http://www.actuate.com | http://www.opentext.com

Sign In or Register to comment.