modify和transporting运行效率研究以及FIELD_SYMBOLS
来源:互联网 发布:网络终结者p2p下载 编辑:程序博客网 时间:2024/06/04 14:39
原文链接:http://abaper.blogbus.com/logs/2705034.html
先看下面的两段程序, 你认为哪一个执行的更快一些?数据定义和提取:DATA: BEGIN OF it_marc OCCURS 0, matnr LIKE marc-matnr, werks LIKE marc-werks, dispo LIKE marc-dispo, plifz LIKE marc-plifz, ENd OF it_marc.
select matnr werksinto table it_marcfrom marc.程序一: LOOP AT it_marc. it_marc-dispo = 'G00'. it_marc-plifz = 5. MODIFY it_marc. ENDLOOP.程序二: LOOP AT it_marc. it_marc-dispo = 'G00'. it_marc-plifz = 5. MODIFY it_marc TRANSPORTING dispo plifz. ENDLOOP.两个程序唯一的不同就是MODIFY语句的使用,程序二使用了TRANSPORTING子句,更新内部表记录时仅更新DISPO,PLIFZ两个字段.我的直觉是程序二应该运行的快一些,毕竟更新的数据少了.但是运行结果出乎意料, 10次运行时间如下:程序一程序二122,167 128,485120,686 128,306120,732 128,273120,737 128,273120,725 128,278120,418 128,323120,648 128,267121,187 128,246120,741 128,023120,647 128,012很明显, 程序一运行要比程序二快, 大概快6%, 具体原因是什么呢? 我实在想不明白.在SAP关于官方文档中,关于使用TRANSPORTING子句有这样的解释:With the MODIFY variant "MODIFY itab ... TRANSPORTING f1 f2 ..."the task of updating a line of an internal table can be accelerated.The longer the table line is, the larger the speed-up is. The effect increases for tables with complex structured line types.从上面的解释来看,内部表的结构越大, 使用TRANSPORTING子句越有效, 于是我修改IT_MARC的定义如下:DATA: it_marc LIKE TABLE OF marc WITH HEADER LINE.重新运行, 10次运行时间如下:程序一 程序二341,469 311,265340,983 311,268341,285 311,432341,364 311,395341,630 311,928341,324 311,358341,280 311,439341,328 311,247341,577 311,269341,312 311,227这样的话程序二比程序一更有效率,大概快9%当然,大多数情况下,我们使用的内部表不会像MARC这样大, 看来有必要寻求一个平衡点.我做了一下测试,逐步增大内部表的结构,当内部表的大小为150个字节的时候, 程序一和程序二的运行时间基本相等.其实,对于上面的功能,使用FIELD-SYMBOLS修改的速度最快,速度大概快一倍,下面是一个示例:FIELD-SYMBOLS: <fs> LIKE LINE OF it_marc. LOOP AT it_marc ASSIGNING <fs>. <fs>-dispo = 'G00'. <fs>-plifz = 5. ENDLOOP.
0 0
- modify和transporting运行效率研究以及FIELD_SYMBOLS
- MODIFY TRANSPORTING
- i++ 和 ++i 以及 i= i + 1 的运行效率
- JDBC的效率问题研究和总结
- 字符指针 和 字符串 效率的 研究
- 运行效率的改进策略和方法
- C++/JAVA运行机制和运行效率
- change和modify
- 【matlab】预分配内存提高运行效率以及时间比较
- Mysql中count(*),DISTINCT的使用方法和效率研究
- Mysql中count(*),DISTINCT的使用方法和效率研究
- Mysql中count(*),DISTINCT的使用方法和效率研究
- Mysql中count(*),DISTINCT的使用方法和效率研究
- Mysql中count(*),DISTINCT的使用方法和效率研究
- Mysql中count(*),DISTINCT的使用方法和效率研究
- Mysql中count(*),DISTINCT的使用方法和效率研究
- Mysql中count(*),DISTINCT的使用方法和效率研究
- Mysql中count(*),DISTINCT的使用方法和效率研究
- 关于GCC / VS字节对齐
- codeforces 372C Watching Fireworks is Fun 单调队列优化dp
- Ojibwa754
- 如何提高测试用例设计的测试覆盖率
- Android 应用隐藏标题栏和状态栏
- modify和transporting运行效率研究以及FIELD_SYMBOLS
- extern用法总结
- 散列技术-散列表的概念
- 构建基本脚本
- 三种方法实现从“一个(组)查询过程中返回两个表的查询结果”
- linux shell学习(一)
- Unity3D之如何将包大小减少到极致
- wget命令 scp命令 rcp命令
- C++中四种强制类型转换