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
for ( int i = 0; i < groupCount; i++ )
		{
			int index = groupDefs[i].getColumnIndex( );
			if ( index >= 0 )
			{
				sortKeyIndexes[i] = groupDefs[i].getColumnIndex( );
				sortKeyColumns[i] = groupDefs[i].getColumnName( );
				sortAscending[i] = true;/*groupDefs[i].getGroupSpec( )
						.getSortDirection( ) != IQuery.GroupSpec.SORT_DESC;*/
			}
		}
		for ( int i = 0; i < sortCount; i++ )
		{
			int keyIndex = query.getOrdering( )[i].getIndex( );
			String keyName = query.getOrdering( )[i].getField( );
			
			
			if ( keyName != null )
				keyIndex = rsMeta.getFieldIndex( keyName );
			sortKeyIndexes[groupCount + i] = keyIndex;
			sortKeyColumns[groupCount + i] = keyName;
			sortAscending[groupCount + i] = query.getOrdering( )[i].isAscendingOrder( );
		}
		return new SortSpec( sortKeyIndexes, sortKeyColumns, sortAscending );
	}
}
/**
 * Structure to hold a group instance with its startIndex, endIndex, filter
 * result, sortKeys and Sort directions.
 *