运行时分析

运行时分析 (★★)

#debugging #analysis-tools #performance

用途

方面 详情
事务 SE30(或 SAT 新版本)
目标 测量运行时需求,定位性能瓶颈
测量内容 ABAP、数据库和系统层花费的时间

测量过程

1
2
3
4
5
6
7
8
9
10
11
+------------------+
| 1. 定义变体 | ← 选择测量什么和如何测量
+--------+---------+
|
+--------v---------+
| 2. 执行 | ← 运行程序/事务
+--------+---------+
|
+--------v---------+
| 3. 分析 | ← 查看命中列表和调用层次
+------------------+

测量类别

类别 测量内容
ABAP ABAP 处理时间(语句、模块化单元)
数据库 数据库操作时间(SQL 语句)
系统 系统调用时间(I/O、滚动区等)
💡进行详细分析时,设置 Aggregation = None。这显示每个单独的调用而非汇总的合计。

聚合级别

聚合 详细程度 使用场景
None 每次单独调用 详细分析(推荐)
按调用位置 按调用位置汇总 识别热点
按调用者 按调用程序汇总 程序级概览
📌聚合 = None 是详细分析的推荐设置。其他聚合级别隐藏单个调用信息。

命中列表

命中列表 显示内容
分组命中列表 每个模块化单元的时间(方法、FORM、函数)
内表命中列表 内表操作花费的时间
数据库表命中列表 每个数据库表访问花费的时间
1
2
3
4
5
6
7
8
分组命中列表(示例):
+-----------------------------+----------+--------+
| 模块化单元 | 总时间 % | 净时间 % |
+-----------------------------+----------+--------+
| ZCL_ORDER=>PROCESS | 45.2 | 2.1 | ← 调用其他单元
| ZCL_ORDER=>READ_DATA | 38.1 | 38.1 | ← 自包含
| ZCL_ORDER=>CALCULATE | 15.0 | 15.0 | ← 自包含
+-----------------------------+----------+--------+

总时间 vs 净时间

指标 含义
总时间(Gross) 包括所有被调用子程序的总时间
净时间(Net) 单元本身花费的时间(不包括被调用单元)
1
2
3
4
5
6
Process(总:45s,净:2s)
├── Read_Data(总:38s,净:38s) ← 真正的瓶颈
└── Calculate(总:15s,净:15s)

总时间 = 自身时间 + 所有被调用单元的时间
净时间 = 仅自身时间(不包括调用)
💡专注于净时间来找到实际的瓶颈。高总时间加低净时间意味着该单元调用了其他慢速单元。

技巧与提示

功能 用途
Tips & Tricks 按钮 通过测量的性能比较不同编码方法
比较 并排运行时比较两种实现
示例 预制示例展示慢速 vs 快速模式
💡Tips & Tricks 部分提供现成的性能比较,通过实际测量演示最佳实践。

考试/测试模式

关键词 / 短语 答案
“运行时分析事务” SE30(或 SAT)
“三个测量类别” ABAP、数据库、系统
“推荐的聚合级别” None(用于详细分析)
“总时间 vs 净时间” 总时间 = 包括子调用;净时间 = 仅自身时间
“分组命中列表显示” 每个模块化单元的时间
“内表命中列表显示” 内表操作花费的时间
“Tips & Tricks 用途” 不同编码方法的性能比较
“如何找到瓶颈” 在命中列表中查找最高净时间

相关笔记