Laufzeitmessung von Datenbankzugriffen
Das folgende Beispiel soll Ihnen den Einsatz der Anweisung GET RUN TIME FIELD zur Laufzeitmessung von Datenbankzugriffen demonstrieren.
REPORT demo_special_tech_get_runt_db.
DATA: t1 TYPE i,
t2 TYPE i,
t TYPE p DECIMALS 2.
PARAMETERS n TYPE i DEFAULT 10.
DATA: toff TYPE p DECIMALS 2,
tsel1 TYPE p DECIMALS 2,
tsel2 TYPE p DECIMALS 2.
TABLES sbook.
t = 0.
DO n TIMES.
GET RUN TIME FIELD t1.
* Offset
GET RUN TIME FIELD t2.
t2 = t2 - t1.
t = t + t2 / n.
ENDDO.
toff = t.
WRITE: / 'Mean Offset Runtime :', toff, 'microseconds'. "#EC
OTEXT
SKIP.
t = 0.
DO n TIMES.
GET RUN TIME FIELD t1.
SELECT * FROM sbook.
ENDSELECT.
GET RUN TIME FIELD t2.
t2 = t2 - t1.
t = t + t2 / n.
ENDDO.
tsel1 = t - toff.
WRITE: / 'Mean Runtime SELECT * :',
tsel1, 'microseconds'.
SKIP.
t = 0.
DO n TIMES.
GET RUN TIME FIELD t1.
SELECT carrid connid FROM sbook
INTO (sbook-carrid, sbook-connid).
ENDSELECT.
GET RUN TIME FIELD t2.
t2 = t2 - t1.
t = t + t2 / n.
ENDDO.
tsel2 = t - toff.
WRITE: / 'Mean Runtime SELECT List:',
tsel2, 'microseconds'.
Die Ausgabe kann etwa wie folgt aussehen:
Mean Offset Runtime : 25,22 microseconds
Mean Runtime SELECT * : 257.496,85 microseconds
Mean Runtime SELECT List: 167.904,63 microseconds
In diesem Beispiel wird die Laufzeit von drei Programmsegmenten untersucht:
·
ein ‘leeres’ Programmsegment zur Bestimmung des Offsets der Laufzeitmessung·
ein Programmsegment, das alle Daten der Datenbanktabelle SBOOK liest·
ein Programmsegment, das zwei Spalten der Datenbanktabelle SBOOK liest.Das Ergebnis zeigt, daß der Offset der Laufzeitmessung hier vernachlässigbar ist und daß das Lesen bestimmter Spalten einer Tabelle schneller ist als das Lesen ganzer Zeilen.