SAP ABAP代码优化(5)之空间换取时间策略
2014-10-25 22:15
316 查看
在SAP ABAP报表开发中,我们经常需要频繁读取基本表中的数据,例如MAKT表的描述。如下述代码所示:
LOOP AT ITAB.
SELECT SINGLE MAKTX INTO itab-maktx FROM makt WHERE MATNR = ITAB-MATNR.
ENDLOOP.
上述代码在内表ITAB数据量不大的时候,性能影响不会太大,但是如果内表ITAB数据量较多时,程序花在读取TABLE MAKT上的时间就会很多,性能也就会下降很多。这时可以修改成以下代码,首先一次性全部读入到内表:
SELECT * CORRESPONDING TABLE OF it_makt FROM makt .
SORT it_makt BY matnr.
LOOP AT ITAB.
REAB TABLE it_makt WITH KEY matnr = itab-matnr binary search.
IF sy-subrc = 0.
itab-maktx = it_makt-maktx.
ENDIF.
ENDLOOP.
加上上述代码采用二分查找法,程序的性能会有很大的提升。相当于全部数据从内存中读取。这就是用内存空间换取时间的例子。
以上为本站原创,转载请注明出处.
以上来自 http://www.abapblogs.com/?p=197
LOOP AT ITAB.
SELECT SINGLE MAKTX INTO itab-maktx FROM makt WHERE MATNR = ITAB-MATNR.
ENDLOOP.
上述代码在内表ITAB数据量不大的时候,性能影响不会太大,但是如果内表ITAB数据量较多时,程序花在读取TABLE MAKT上的时间就会很多,性能也就会下降很多。这时可以修改成以下代码,首先一次性全部读入到内表:
SELECT * CORRESPONDING TABLE OF it_makt FROM makt .
SORT it_makt BY matnr.
LOOP AT ITAB.
REAB TABLE it_makt WITH KEY matnr = itab-matnr binary search.
IF sy-subrc = 0.
itab-maktx = it_makt-maktx.
ENDIF.
ENDLOOP.
加上上述代码采用二分查找法,程序的性能会有很大的提升。相当于全部数据从内存中读取。这就是用内存空间换取时间的例子。
以上为本站原创,转载请注明出处.
以上来自 http://www.abapblogs.com/?p=197
相关文章推荐
- 浅谈SAP 中ABAP循环和取数代码优化
- 分批处理大数据 -- 时间换取空间策略
- ABAP--SAP的SYSTEM的函数列表和代码示例
- ABAP--SAP的SYSTEM的函数列表和代码示例
- ABAP--C语言调用SAP的RFC的代码样例
- Java代码优化,策略与方法
- swap实现(优化空间和时间),及其带来的问题
- SAP ABAP程序性能优化
- ABAP--两个提高ABAP代码效率的优化方法
- 数据结构和算法的选择决定了-代码时间或者空间效率
- SAP ABAP程序优化方法(搜集自论坛)
- SAP ABAP程序优化方法
- ABAP--SAP的SYSTEM的函数列表和代码示例
- abap运行时间的优化
- ABAP--在SAP中设计自动刷新的报表代码
- Java代码优化,策略与方法
- ABAP--SAP的SYSTEM的函数列表和代码示例
- ABAP--在SAP中设计自动刷新的报表代码
- 请朋友帮忙优化一下下面的代码,降低其时间复杂度。。。
- ABAP--C语言调用SAP的RFC的代码样例