二维码

[性能] se30分析程序运行时间实例

Twilight发表于 2014-02-09 20:17zhongguomao 最后回复于 2017-09-07 16:43 [复制链接] 9819 2

可先参考该贴:abap运行时间分析工具se30使用介绍

程序功能:接受用户输入条件查找符合要求的数据库资料并显示。

主程序代码:
  1. REPORT  ZDEMON_024 NO STANDARD PAGE HEADING.
  2. TYPES:BEGIN OF NEW_TCURT_TAB,
  3.         LAISO TYPE LAISO,"语言ISO编码
  4.         WAERS TYPE WAERS,"币种编码
  5.         LTEXT TYPE LTEXT,"长文本
  6.         KTEXT TYPE KTEXT,"短文本
  7.       END OF NEW_TCURT_TAB.

  8. DATA:GT_NEW_TCURT_TAB TYPE TABLE OF NEW_TCURT_TAB,
  9.      WA_NEW_TCURT_TAB TYPE NEW_TCURT_TAB,
  10.      NEW_T002_LAISO TYPE LAISO,
  11.      NEW_TCURT_SPRAS TYPE SPRAS,
  12.      PAGE_NUM TYPE I.

  13. CLEAR GT_NEW_TCURT_TAB.
  14. CLEAR WA_NEW_TCURT_TAB.

  15. PARAMETERS:USE_W TYPE WAERS.

  16. START-OF-SELECTION.
  17. "->第一条接受用户输入为条件查找需要的资料
  18. SELECT T002~LAISO
  19.        TCURT~WAERS
  20.        TCURT~LTEXT
  21.        TCURT~KTEXT
  22.   FROM TCURT
  23.   LEFT JOIN T002 ON T002~SPRAS = TCURT~SPRAS
  24.   INTO TABLE GT_NEW_TCURT_TAB
  25.   WHERE TCURT~WAERS = USE_W.
  26. "->第二条当用户输入无效时,自动查找出数据库表全部内容
  27. IF GT_NEW_TCURT_TAB IS INITIAL.
  28.   MESSAGE '你输入的币种不存在!系统将输出所有信息' TYPE 'I'.
  29.   SELECT T002~LAISO
  30.        TCURT~WAERS
  31.        TCURT~LTEXT
  32.        TCURT~KTEXT
  33.   FROM TCURT
  34.   LEFT JOIN T002 ON T002~SPRAS = TCURT~SPRAS
  35.   INTO TABLE GT_NEW_TCURT_TAB.
  36. ENDIF.

  37. FORMAT HOTSPOT COLOR 6 INVERSE ON.
  38. ULINE.
  39. WRITE:/5 '币种表'.
  40. ULINE.
  41. WRITE:/5(20) '语言ISO编码',
  42.         (40) '币种编码',
  43.         (40) '长文本',
  44.              '短文本'.
  45. ULINE.
  46. LOOP AT  GT_NEW_TCURT_TAB INTO WA_NEW_TCURT_TAB.
  47.   FORMAT HOTSPOT COLOR 7 INVERSE ON.
  48.   WRITE:/5(20) WA_NEW_TCURT_TAB-LAISO,
  49.           (40) WA_NEW_TCURT_TAB-WAERS,
  50.           (40) WA_NEW_TCURT_TAB-LTEXT,
  51.                WA_NEW_TCURT_TAB-KTEXT.
  52. PAGE_NUM = SY-TABIX MOD 25.
  53. IF PAGE_NUM = 0.
  54.   NEW-PAGE.
  55.   FORMAT HOTSPOT COLOR 5 INVERSE ON.
  56.   WRITE:5(20) '语言ISO编码',
  57.          (40) '币种编码',
  58.          (40) '长文本',
  59.               '短文本'.
  60.   ULINE.
  61. ENDIF.
  62. ENDLOOP.
复制代码


实例分析过程

1.输入程序名和变式。(本次分析使用默认设置)
运行时间分析1.jpg

推荐间三个测量变式:
a)PREF_BY_CALL(default):在程序部分什么都不选,语句部分除kernel level  runtime administration和internal table change and read operation之外其它都选,在第三部分设置aggreation ‘per call position’和最大的文件的大小为20000k,最大的运行时间为3000sec  
b)PREF_BY_CALL_ITAB,除了选上internal table change and read operation外其它的 更上面一样
c)PREF_NO_AGG,除了把第三部分的no aggregation设成ON,其它的跟 PREF_BY_CALL一样

2. 点击分析运行按钮进入程序运行界面。

3.程序运行成功,输出查找的到所有信息。
程序执行结果.jpg

4.退出程序界面,返回SE30界面,将看到下面的信息。
运行时间分析2.jpg

6.到这里,程序运行的过程就已经完了,接下来就是查看 EVALUATE 评价界面和查看命中清单了。

7.点击 Evaluate 按钮进入评价界面将看到一下信息。
运行时间分析3.jpg

这个屏幕最重要的信息便是在数据库和应用服务器层的总共运行时间。这些地方正是你可以优化的地方。或许你已经对总共的运行时间有所期望或受外界所限。通常情况下为了达到2sec的响应时间,你在应用层的运行时间要远远小于2sec。而较大的批处理程序可能需要较长的时间。当然运行时间的好坏,还需要你根据具体情况去判断。  图中的红绿颜色没有什么本质上的意义,只是如果它的百分比达到了50%就会由绿色变成红色。  对于一个ABAP程序来说数据库和系统的运行时间应该比较短,至少不能太大。对于系统运行时间来说,10%已经是太大了。对于数据库来说运行时间一般不能超过50%。ABAP是逻辑处理的主要部分,所以ABAP应当占有最多的运行时间。

8.看了解大概情况以后,我们必须知道时间消耗的细节情况,这时我们就必须进入到命中清单了。点击上面图上所表示的图标将进入到命中清单中。具体如下图。
运行时间分析4.jpg

在命中清单中,由上到下的便是程序运行的调用顺序。比较重要的测量值是:NO,GROSS和NET,它告诉了你每个操作执行的频次,所需的时间,GROSS包含子操作所花费的时间,NET只计算了操作本身所需的时间。注意时间的单位是微秒,时间是总时间不是每部操作的时间。
查看消耗时间时我们可以首先以gross time倒序排列检查列表,你看到的也是缺省的显示方式。
        1高gross time便是消耗资源较高的分支  
        2然后按照NET TIME排倒序,高的NET TIME便是消耗资源较高的语句

9.命中清单中还有一个非常有用的功能,当我们将光标停留在我们需要关注的那一行,例如上图中有红框选中的那一行,然后点击图中左上角圈住的那个标志。将会出现下图的效果。
运行时间分析5.jpg

命中清单就直接调转到程序代码中,所对应的那一个代码段。这样我们就可以很方便的找出,程序中哪一段代码,消耗的时间最多,哪里需要改进,优化。这一功能将是无比方便的。

10.以上的就是整个的过程。在最后如果程序员对程序不满意的话,可以根据分析的结果,进行优化。具体的优化,可以参照SE30里的 提示与技巧 里的代码进行优化

评分

参与人数 1雨露 +5 收起 理由
奇异恩典 + 5 很棒哒

查看全部评分

回复

使用道具 举报

zzxbat007
感谢分享  支持一下
SAP Business One 凭借单一系统 优化你的整个业务  www.iwilley.com
回复 支持 反对

使用道具 举报

zhongguomao
感谢分享,一直想了解这一块的东西。
回复 支持 反对

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表