ABAP程序性能优化

 降低CPU负载
1。使用where 条件减少循环次数
   减少循环次数可以减少CPU操作次数,减少操作时间 loop at itab where vbeln in s_vbeln.
2.尽量避免使用move-corresponding和into corresponding fields of .
  corresponding语句在系统内部存在隐式操作:
  a.检查元素名称匹配
  b.检查元素类型匹配
  c.元素类型转换
3.使用sorted table 和hashed table表类型
  sorted table定义:顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表彩顺序存储的方式存储就称之为顺序表,顺序表是将表中的结点依次存放在计算机内存中一组地址边疆的存储单元中。
  types:begin of i_tab,
    vbeln like vbap-vbeln,
 posnr like vbap-posnr,
 end of i_tab.
  data:sort_tab type sorted table of i_tab with non-unique key vbeln.
hashed table 定义:
  哈希表(也叫散列表)是根据关键字值直接进行访问的数据结构,也就是说,它通过把关键字值映射到表中一个位置来访问记录,以加快查找的速度,这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。
  data: hash_tab type hashed table of i_tab with unique key vbeln.
  注:哈希表类型只能使用唯一键约事,而且当主键不唯一时效率不能体现。
standard table定义:
  data stad_tab type standard table of i_tab.
使用binary search二分查找算法:
  一般线性查找的缺点就是耗时,而二分查找比线性查找更高效。注:使用binary search前必须对内表进行按索引排序。
  sort table itab2 by vbeln posnr.
  read table itab2 with key vbeln = itab1-vbeln and posnr = itab1-posnr binary search.
  时间复杂度为o(log n)阶
使用较高效的delete adjacent duplicates from 删除内表邻近重复记录。使用前必须要对内表进行按索引排序 sort itab by XXX.
使用较高效的collect语句对记录进行聚集加总.
 注:collect语句的效率只体现在当你使用的是顺序表和哈希表的时候,或者内表经过有效排序之后,否则内表数据过多时,检索时间会很长,一般不推荐使用在记录条数非常多的标准表。
  collect wa into itab.
 
降低数据库负载(减少IO操作)
1。避免使用select..endselect语句
   select..endselect语句其实是一个循环体,为了减少循环次数,建议使用一次性taBLE赋值。
2。避免使用select *
3。使用for all entries in 语句联接数据表和内表
   使用的时机:
   a.簇表是禁止join的表类型,当需要连接簇表查询时
   b.join超过3个表会出现性能问题,当使用join连接的表超过3个时。

你可能感兴趣的:(职场,休闲,ABAP性能优化)