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
groupDefs = new GroupBy[groupSpecs.length];
			for ( int i = 0; i < groupSpecs.length; ++i )
			{
				int keyIndex = groupSpecs[i].getKeyIndex( );
				String keyColumn = groupSpecs[i].getKeyColumn( );
				if (resultPopoulator.getEventHandler() != null
						&& resultPopoulator.getEventHandler().isRowID(keyIndex,
								keyColumn)) {
					groupDefs[i] = GroupBy.newInstanceForRowID(groupSpecs[i]);
					continue;
				}
				
				
				if ( keyColumn != null )
					keyIndex = rsMeta.getFieldIndex( keyColumn );
				if ( keyIndex < 1 || keyIndex > rsMeta.getFieldCount( ) )
				{
					
					throw new DataException( ResourceConstants.INVALID_GROUP_KEY_COLUMN,
							keyColumn );
				}
				groupDefs[i] = GroupBy.newInstance( groupSpecs[i],
						keyIndex,
						keyColumn,
						rsMeta.getFieldValueClass( keyIndex ) );
			}
		}
		else
		{
			groupDefs = new GroupBy[0];