ABAP(Advanced Business Application Programming)是一种高级业务应用编程语言,主要用于开发 SAP 系统。在 ABAP 中,函数调用时的参数传递方式有两种:按值传递(pass by value)和按引用传递(pass by reference)。这两种传递方式在很多编程语言中都有应用,它们在参数传递和内存管理方面有一些重要的区别。
在 ABAP 中,要使用按值传递,需要在参数声明中使用关键字 VALUE
。例如:
FORM my_function USING VALUE(param) TYPE i.
按引用传递是 ABAP 中默认的参数传递方式。要使用按引用传递,可以省略关键字 VALUE
:
FORM my_function USING param TYPE i.
总结一下,按值传递和按引用传递的主要区别如下:
主方法的行数压缩到34行,把逻辑拆分成很多小方法,增加了可读性,但是一定程度上降低了性能:
目前AG3用我的账号测试结果。左边是请求已经优化过的前4个节点,右边column是4个优化节点+attachment。单位为秒。
可以看出attachment确实比较慢,极端情况下耗费的时间几乎等于前四个节点的时间总和。
明天开始attachment的优化研究。
这是周一一个action item的followup
我现在代码里大量使用了pass by value的returning写法,因为这样代码写出来比pass by ref稍稍精简点,可以少敲几个字符。但是pass by value会在函数体内return的时候,存在形参copy到实参的拷贝。因为拿不定注意最后到底用哪种,做了一个简单的测试。
分别用两种方式在method里填充一个拥有10个字段的structure,然后用两种方式返回:
比较绿色的pass by ref和蓝色的pass by value性能。
1000条:
性能相差0.4毫秒
100万条:
性能相差0.2秒
由于offline的use case显然是1000条的case,只有0.4毫秒的差异,可以放心使用了。