问题描述
我正在面试一份工作,在他们发给我的测试中,他们提供了内部表上的 2 个 ABAP 循环的以下图像,并询问哪个循环执行得更快:
![enter image description here](https://i.stack.imgur.com/pOJcj.png)
在互联网上大量检查后,我得出了两种不同的结果:
- 一方面,就我在网上找到的内容而言,“WHERE”语句比逻辑 if 语句更快,因为它直接处理满足条件的记录。
- 另一方面,似乎 2 个循环正在做不同的事情,并且每当 WA2-K != WA1-K 时,正确的循环基本上都会向前跳跃,所以我相信执行非常依赖于提供的表。
我错过了什么吗?这个问题有明显的 1 个答案吗?
解决方法
您的屏幕截图来自程序 RSHOWTIM
(或 SE38
> 菜单环境 > 示例 -> 性能示例),该程序可在所有基于 ABAP 的软件中使用。
这两种算法在做完全相同的事情 (*),但一种比另一种表现更好。 SY-TABIX
是 LOOP AT
块内最后迭代行的行号(前提是它是标准表或排序表)。
(*) 见 Gert 评论
全屏是这个(在 ABAP 7.52 中):
![SAP RSHOWTIM Nested loops](https://i.stack.imgur.com/SO7eG.png)
注意:如果你需要训练,你可以在你的电脑上安装一个 ABAP 试用系统。或者您可以使用 Cloud 试用版(您必须支付网络/磁盘使用费)。