Measure your performance improvements, find the bottle necks and check whether your performance improvement worked... Transaction SE30
- Runtime analysis should be used for your performance tune. When you start this on new systems, it will prompt for transaction SAT
, the more improved version. It tells you what selections are done, which selections consume the most time and thus which improvements will have the most effect when attended to.
Olga explains this very nicely here (a 20 minute screencast by SAP, click on "View document").
To tune performance, it's very important to put your investigator cap on. Inspector Columbo notices all.
Even though there is a 6 step tune described on this issue, proper performance tuning involves more. Performance can become untunable due to poor design. Runtime analysis can really help: run it for a small selection, measure your tuning improvements and then run it for a bigger selection. Also look ahead: your development system will not have the tables-load of the production system, make up a top 3 of slow tables and check the production load of your top 3. More often than not, the top 3 will no longer be in the top 3 after your tune. Consider redetermining a top 3 a few times... You may find that the SE16
transaction can be quite valuable using the "Number of entries" button on the selection screen!
If you are developing on a system that has a true-life client on board, this example may come in handy:
REPORT ZTABLECOUNTER. parameter p_table(40) default 'EKPO'. data: i_count type table of sy-index with header line, i_mandt type table of t000-mandt with header line. data: i_buffer type table of indx-clustd with header line. if not p_table is initial. select mandt from t000 into table i_mandt. loop at i_mandt. select count( * ) from (p_table) client specified into i_count where mandt eq i_mandt. append i_count. endloop. uline. write: / sy-vline no-gap, 'Client' no-gap, sy-vline no-gap, '# of entries on', p_table, at sy-linsz sy-vline no-gap. uline. loop at i_mandt. read table i_count index sy-tabix. write: / sy-vline no-gap, (6) i_mandt no-gap, sy-vline no-gap, i_count, at sy-linsz sy-vline no-gap. hide i_mandt. endloop. uline. endif.