ABAP中移动和=分配之间的性能差异
“移动到”与x=y之间是否有任何性能增益?我有一个非常老的计划,我正在优化,我想知道是否值得把所有的行动都付诸实施。关于ABAP优化的任何其他一般提示也很好。这两种说法是: " 要将数据对象源的值分配给变量目标,请使用以下语句:ABAP中移动和=分配之间的性能差异,abap,Abap,“移动到”与x=y之间是否有任何性能增益?我有一个非常老的计划,我正在优化,我想知道是否值得把所有的行动都付诸实施。关于ABAP优化的任何其他一般提示也很好。这两种说法是: " 要将数据对象源的值分配给变量目标,请使用以下语句: MOVE source TO destination. 或同等声明 destination = source. “不,这只是以两种不同方式表示的相同操作。没有什么好处。如果你想要一般的提示,我建议你仔细研究。如果您必须优化特定的程序,请使用跟踪工具(在最新版本中使用
MOVE source TO destination.
或同等声明
destination = source.
“不,这只是以两种不同方式表示的相同操作。没有什么好处。如果你想要一般的提示,我建议你仔细研究。如果您必须优化特定的程序,请使用跟踪工具(在最新版本中使用transaction
SAT
。1)在ABAP语言中使用SELECT语句时应小心。
不必要的数据库连接大大降低了ABAP程序的性能
2) 使用带有函数的内部表时,应通过引用调用它以减少内存使用
参考电话:
传递指向内存位置的指针。对
子例程中的变量影响外部变量
子程序
3) 不应将内部表格与工作区一起使用
4) 使用嵌套循环时,请使用排序算法 它们是相同的,
ADD
关键字和+
运算符也是相同的
如果你想优化你的ABAP,我发现最大的罪魁祸首是:
- 未正确使用二进制查找和/或(内部)表键。 ABAP的语法在表的使用上是死气沉沉的。诀窍 有效地使用表格。基本上写 更好/最优/优雅的高级代码。这永远是赢家
- 更少的指令=更少的时间。你点击的指令越少 程序运行得更快。这在紧密循环中很重要。。。我 知道这听起来很明显,但是ABAP太慢了,如果你真的 试图优化关键程序,这将带来不同。 (我们的流程可以运行数天……并缩短一个小时左右 会有所不同的!)
- 不要混用。有一点开销的一些
隐式转换。。。例如,如果您正在初始化
数据类型,然后将正确的文字字符串与 (反勾)引号:`literal`。这也适用于在中查找 使用键的表。。。使用完全匹配的数据类型string
- 函数调用。。。我不能强调函数调用的开销 足够地你拥有的越少越好。与任何真实的事情都背道而驰 计算机程序员相信,但你有它。。。ABAP是一种 特例
- 使用
(或赋值
)循环-在某些情况下稍慢 类型),避免像瘟疫一样进入REF TO
SWITCH
语句只是美化了IF
条件句。。。因此,将最常见的条件移至顶部 不,它们是一样的
以下是我多年来提高绩效的几点提示:
1) 如果在可能的情况下使用move-correlative,代码可以更加简洁、模块化和可扩展(在遥远的过去,这是不受欢迎的,但其技术原因通常不再适用)
2) 随时使用SAT,并确保打开内部表格跟踪。这就像是在黑暗中打开灯,而不是绊倒在家具上
3) 让数据库层为您做尽可能多的工作。尽可能地组合查询,尤其是在组合结果集时。对于所有条目,由联接链接的两个查询通常比选择>itab>选择要好得多
4) 这有点高级,但对于所有条目,其性能通常比短语中的等效选择选项慢得多。这似乎是因为后者被构建为对数据库层的一个大查询,而前者需要多次访问数据库层。当然,需要注意的是,如果select选项中的记录太多,则在数据库层生成的查询将超过系统上允许的大小,但在该限制范围内可能会获得较大的性能提升。通常,SAP只喜欢选择选项
5) 索引,索引,索引 首先,移动并不会真正影响性能 对我工作的项目有很大影响的是:
您可以使用ADT Eclipse创建CD。或视图(se11)具有良好的选择性能。“将a移动到”b和“a=b”在ABAP中完全相同。没有性能差异,“移动”只是一个更明显、更引人注目的版本 但是如果你谈论“移动对应”,是的,有一个性能差异。编写代码更实用,但实际上运行速度比直接移动慢