运行时分析 (★★)
#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、滚动区等) |
聚合级别
| 聚合 |
详细程度 |
使用场景 |
| 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 快速模式 |
考试/测试模式
| 关键词 / 短语 |
答案 |
| “运行时分析事务” |
SE30(或 SAT) |
| “三个测量类别” |
ABAP、数据库、系统 |
| “推荐的聚合级别” |
None(用于详细分析) |
| “总时间 vs 净时间” |
总时间 = 包括子调用;净时间 = 仅自身时间 |
| “分组命中列表显示” |
每个模块化单元的时间 |
| “内表命中列表显示” |
内表操作花费的时间 |
| “Tips & Tricks 用途” |
不同编码方法的性能比较 |
| “如何找到瓶颈” |
在命中列表中查找最高净时间 |
相关笔记