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個時。
相關文章
相關標籤/搜索