Performance Tester - Vergleich von Codes

Posten Sie hier Tutorials & Cookbooks.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Performance Tester - Vergleich von Codes

Beitrag von RIG (ForumUser / 93 / 24 / 0 ) » 12.09.2012 12:07

Hier mal ein Code den ich zum vergleich verschiedener Ansätze zu Problemlösungen verwende:

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  ZTEST_PERFORMANCETEST
*&
*&---------------------------------------------------------------------*
*&
*&    Test für bis zu 3 Codes
*&
*&---------------------------------------------------------------------*

REPORT  ZTEST_PERFORMANCETEST.

*---------------------------------------------------------------------------------------------*
* YOUR TYPES, DATA AND FIELSYMBOLS    OR Top_include HERE :



*---------------------------------------------------------------------------------------------*
      "---Zeitmessungsvars-----------------------------------
Data: gv_Loop TYPE int4,
      gv_diff_TSL_1 type timestampL,
      gv_start_timestamp_1 type timestampL,
      gv_end_timestamp_1 type timestampL,

      gv_diff_TSL_2 type timestampL,
      gv_start_timestamp_2 type timestampL,
      gv_end_timestamp_2 type timestampL,

      gv_diff_TSL_3 type timestampL,
      gv_start_timestamp_3 type timestampL,
      gv_end_timestamp_3 type timestampL.


*---------------------------------------------------------------------------------------------*
*Anzahl Loops verändern: > wenn keine Zeitdifferenz gemessen wurde
gv_loop = 10.

*******************************************************************************************************************
*******************************************************************************************************************
*******************************************************************************************************************

get TIME STAMP FIELD gv_start_timestamp_1.

*----------------------------------------------------------------
DO gv_Loop TIMES.

  "MY TESTCODE HIER*

ENDDO.
*----------------------------------------------------------------

get TIME STAMP FIELD gv_end_timestamp_1.
gv_diff_TSL_1 = gv_end_timestamp_1 - gv_start_timestamp_1.
*********************************************************************************************************************
get TIME STAMP FIELD gv_start_timestamp_2.

*----------------------------------------------------------------
DO gv_Loop TIMES.

    "MY TESTCODE HIER*

ENDDO.
*----------------------------------------------------------------

get TIME STAMP FIELD gv_end_timestamp_2.
gv_diff_TSL_2 = gv_end_timestamp_2 - gv_start_timestamp_2.
*********************************************************************************************************************
get TIME STAMP FIELD gv_start_timestamp_3.

*----------------------------------------------------------------
DO gv_Loop TIMES.

        "MY TESTCODE HIER*

ENDDO.
*----------------------------------------------------------------

get TIME STAMP FIELD gv_end_timestamp_3.
gv_diff_TSL_3 = gv_end_timestamp_3 - gv_start_timestamp_3.




*********************************************************************************************************************
* Ausgabe *

Write: / , / , / ,
       / , 'Startzeit: ' , gv_start_timestamp_1,
       / , 'Endzeit  : ' , gv_end_timestamp_1,
       / , 'Zeitdiff.: ' , gv_diff_TSL_1,
       / , / , / ,
       / , 'Startzeit: ' , gv_start_timestamp_2,
       / , 'Endzeit  : ' , gv_end_timestamp_2,
       / , 'Zeitdiff.: ' , gv_diff_TSL_2,
       / , / , / ,
       / , 'Startzeit: ' , gv_start_timestamp_3,
       / , 'Endzeit  : ' , gv_end_timestamp_3,
       / , 'Zeitdiff.: ' , gv_diff_TSL_3.

Bei Datenbankoperationen sollte man allerdings genau wissen wo man cleart bzw. eigene Variablen für alle Vergleichcodes verwenden um keine unechten Zeitdifferenzen zu bekommen.

Also alles was nicht zum wirklichen vergleichen gehört am besten raus aus den Loops.

Für Anregungen bin ich gern zu haben..

Viel Spass und Erfolg damit...

MfG RiG


Re: Performance Tester - Vergleich von Codes

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) » 12.09.2012 20:21

Gibt es im Standard unter Tcode SE38 --> Enviroment --> Examples --> Performance Exampels

Re: Performance Tester - Vergleich von Codes

Beitrag von Alexander D. (Expert / 674 / 29 / 81 ) » 13.09.2012 09:58

Unit605 hat geschrieben:Gibt es im Standard unter Tcode SE38 --> Enviroment --> Examples --> Performance Exampels
das schon, aber damit kann man nur die Laufzeit im vorgegebenen Code messen, oder?

bei der Berechnung von gv_diff_TSL_1, gv_diff_TSL_2 und gv_diff_TSL_3 hätte ich vielleicht noch durch gv_Loop geteilt, um nicht die gesamte, sondern eine durchschnittliche Laufzeit je Lauf auszugeben
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: Performance Tester - Vergleich von Codes

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) » 13.09.2012 15:21

"Normalerweise" kann man dort auch eigenen Code eingeben und den vorhanden auch aendern.

Oft ist es aber in Firmen so, dass die beiden Controls nicht eingabebereit sind.

Im Entwicklungssystem verstehe ich nie, warum die nicht eingabebereit sind, im Produktiv muessen sie allerdings inaktiv sein.

Re: Performance Tester - Vergleich von Codes

Beitrag von black_adept (Top Expert / 3341 / 60 / 623 ) » 14.09.2012 08:10

Wenn man das Coding innerhalb der LOOPs in eine eigene FORM-Routine kapselt kann man eine Laufzeitmessung auch ganz einfach via SE30 machen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Performance Tester - Vergleich von Codes

Beitrag von RIG (ForumUser / 93 / 24 / 0 ) » 14.09.2012 13:02

Alexander D. hat geschrieben:
Unit605 hat geschrieben:Gibt es im Standard unter Tcode SE38 --> Enviroment --> Examples --> Performance Exampels
das schon, aber damit kann man nur die Laufzeit im vorgegebenen Code messen, oder?

bei der Berechnung von gv_diff_TSL_1, gv_diff_TSL_2 und gv_diff_TSL_3 hätte ich vielleicht noch durch gv_Loop geteilt, um nicht die gesamte, sondern eine durchschnittliche Laufzeit je Lauf auszugeben
Ja, die Codes dort zu ändern ist nicht so einfach....

und bzgl der Teilung durch Loop: Da kommen dann zu kleine Differenzen raus die untergehen. So lässt sich relativ leicht ablesen was länger dauert und was schneller geht. Die Laufzeit eines ganzen Programms kann man ja auch über Antwortzeit herausbekommen, das ist eher nur zum reinen Vergleich von Codes gedacht die dasselbe machen.

Re: Performance Tester - Vergleich von Codes

Beitrag von babap (Expert / 677 / 1 / 1 ) » 24.09.2012 19:51

Hallo,

zur reinen Berechnung der Laufzeit und zu Performance-Vergleich gibt es auch den Befehl

Code: Alles auswählen.

DATA: T1 type i.
DATA: T2 type i.
DATA: T3 type i.

GET RUN TIME FIELD T1.
...
...
GET RUN TIME FIELD T2.

T3 = T3 - T1 + T2.
Dabei hat man dann in T3 die Zeit in Microsekunden aus dem Messbereich (zuzüglich der Zeit, die man vielleicht schon vorher gemessen hat und dazuaddieren wollte ...)

Aber noch viel einfacher ist es, die Messtrecke in einen Funktionbaustein zu kapseln, und diesen im Testlauf auszuführen.
Ggf. noch die Alternativen über Flags auswählen, über CASE -Anweisung die Laufzeit von verschiedenem Coding messen ...

Gruß
Babap

Seite 1 von 1