Bug 147101 Report generation performance is sluggish
The overall performance of report generation appears to be quite sluggish. Here are numbers that we have measured using ORACLE as a DB. We use ORACLE 10g w/ojdbc14.jar thin driver. select rownum, datetime_id, another_id, text from ( select max(datetime_id) as datetime_id, another_id, text from some_oracle_schema.sample_table where text < 'c%' group by another_id, text ) Query resulting in 8465 rows Using PL/SQL developer: ----------------------- Execution: approx 1 second Iterating through all rows via PL/SQL developer UI: 10 seconds BIRT: ----- Preview page (via dataset editor): shows all 8465 rows in 53 seconds Preview tab (in the designer): shows all 8465 rows in 79 seconds Generation of rptdocument from rptdesign using API: 55 seconds
data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/executor/transform/group/GroupCalculationUtil.java
*
 * Contributors:
 *  Actuate Corporation  - initial API and implementation
 *******************************************************************************/
package org.eclipse.birt.data.engine.executor.transform.group;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import org.eclipse.birt.core.data.DataTypeUtil;
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.data.engine.cache.CachedList;
import org.eclipse.birt.data.engine.cache.ICachedObject;
import org.eclipse.birt.data.engine.cache.ICachedObjectCreator;
import org.eclipse.birt.data.engine.core.DataException;
import org.eclipse.birt.data.engine.executor.BaseQuery;
import org.eclipse.birt.data.engine.executor.cache.ResultSetCache;
import org.eclipse.birt.data.engine.executor.cache.SortSpec;
import org.eclipse.birt.data.engine.executor.transform.ResultSetPopulator;
import org.eclipse.birt.data.engine.i18n.ResourceConstants;
import org.eclipse.birt.data.engine.odi.IQuery;
import org.eclipse.birt.data.engine.odi.IResultClass;
/**
 * The instance of this class is used by CachedResultSet to deal with
 * group-related data transformation operations.
 */
public class GroupCalculationUtil