ABAP Internal Table Performance for STANDARD, SORTED and HASHED Table
来源:互联网 发布:淘宝企业店铺还不如c店 编辑:程序博客网 时间:2024/06/05 06:41
Standard Table is the most widely used table Type. It has performance drawbacks if not used properly.
Few months ago, I asked a question:
Your Preferred table kind for your ITAB
Total of 236 people has voted for the Poll.
Demo Program on ITAB Performance
Before we jump into the poll result, check out the small program and its performance result. Here I’m comparing the Performance of the READ on Internal tables – Standard VS Sorted VS Hashed VS Standard using BINARY.
Performance Comparison - ITAB TYPES
*&---------------------------------------------------------------------**& Purpose : Performance Comparison between READ on various TYPEs of*& internal tables*& Author : Naimesh Patel*& URL : http://zevolving.com/?p=1861*&---------------------------------------------------------------------*REPORT ZTEST_NP_TABLE_TYPE_PERF.* TYPES: BEGIN OF ty_vbpa, vbeln TYPE vbpa-vbeln, posnr TYPE vbpa-posnr, parvw TYPE vbpa-parvw, kunnr TYPE vbpa-kunnr, END OF ty_vbpa. DATA: t_std TYPE STANDARD TABLE OF ty_vbpa.DATA: t_sorted TYPE SORTED TABLE OF ty_vbpa WITH UNIQUE KEY vbeln.DATA: t_hashed TYPE HASHED TABLE OF ty_vbpa WITH UNIQUE KEY vbeln. TYPES: BEGIN OF ty_vbak, vbeln TYPE vbak-vbeln, found TYPE flag, END OF ty_vbak.DATA: t_vbak TYPE STANDARD TABLE OF ty_vbak.DATA: lt_vbak TYPE STANDARD TABLE OF ty_vbak.FIELD-SYMBOLS: <lfs_vbak> LIKE LINE OF t_vbak. DATA: lv_flag TYPE flag, lv_sta_time TYPE timestampl, lv_end_time TYPE timestampl, lv_diff TYPE p DECIMALS 5. data: lv_num_main type i, lv_num_sub type i. START-OF-SELECTION.lv_num_main = 50000. " Change for different number of recordslv_num_sub = lv_num_main / 2.*SELECT vbeln FROM vbak INTO TABLE t_vbak UP TO lv_num_main ROWS.*SELECT vbeln posnr parvw kunnr INTO TABLE t_std FROM vbpa UP TO lv_num_sub ROWS FOR ALL ENTRIES IN t_vbak WHERE vbeln = t_vbak-vbeln AND parvw = 'AG'. * Copying into the Sorted and Hashed tablet_sorted = t_std.t_hashed = t_std.*----* READ on Standard TableGET TIME STAMP FIELD lv_sta_time.LOOP AT t_vbak ASSIGNING <lfs_vbak>. READ TABLE t_std TRANSPORTING NO FIELDS WITH KEY vbeln = <lfs_vbak>-vbeln. IF sy-subrc EQ 0. ".. ENDIF.ENDLOOP.GET TIME STAMP FIELD lv_end_time.lv_diff = lv_end_time - lv_sta_time.WRITE: /(30) 'Standard Table', lv_diff.**----* READ on Standard table with Binary SearchGET TIME STAMP FIELD lv_sta_time.SORT t_std BY vbeln.LOOP AT t_vbak ASSIGNING <lfs_vbak>. READ TABLE t_std TRANSPORTING NO FIELDS WITH KEY vbeln = <lfs_vbak>-vbeln BINARY SEARCH. IF sy-subrc EQ 0. ".. ENDIF.ENDLOOP.GET TIME STAMP FIELD lv_end_time.lv_diff = lv_end_time - lv_sta_time.WRITE: /(30) 'Standard Table - Binary', lv_diff.**----* READ on Sorted TableGET TIME STAMP FIELD lv_sta_time.LOOP AT t_vbak ASSIGNING <lfs_vbak>. READ TABLE t_sorted TRANSPORTING NO FIELDS WITH KEY vbeln = <lfs_vbak>-vbeln. IF sy-subrc EQ 0. ".. ENDIF.ENDLOOP.GET TIME STAMP FIELD lv_end_time.lv_diff = lv_end_time - lv_sta_time.WRITE: /(30) 'Sorted Table', lv_diff.**----* READ on HASHED tableGET TIME STAMP FIELD lv_sta_time.LOOP AT t_vbak ASSIGNING <lfs_vbak>. READ TABLE t_hashed TRANSPORTING NO FIELDS WITH TABLE KEY vbeln = <lfs_vbak>-vbeln. IF sy-subrc EQ 0. ".. ENDIF.ENDLOOP.GET TIME STAMP FIELD lv_end_time.lv_diff = lv_end_time - lv_sta_time.WRITE: /(30) 'Hashed Table', lv_diff.
I ran the program multiple times for different set of records. Here are the average values based on the performance readings:
And on Graph
Yet on another graph, where Standard table readings are considered at benchmark of 100. I used average value for all other ITAB Types to show the tentative performance gain when Using another ITAB Type other than Standard Type.
Now let’s see the Poll Result
Most of the participants choose the Standard Table Type – by far Standard Table is the preferred table type.
As per the above program results & graph, you should carefully decide when to use which Table Type.
- ABAP Internal Table Performance for STANDARD, SORTED and HASHED Table
- Optimizing table views for performance
- SAP ABAP/4学习---Internal table(5)
- SAP ABAP/4学习---Internal table
- ABAP学习笔记三(Internal Table类型)
- Internal Table
- ABAP内表(internal table)有关的系统变量
- ABAP 动态内表构建 Dynamic internal table
- ABAP-Send email with data of internal table as attachment
- ABAP内表(internal table)有关的系统变量
- ABAP开发基础知识:1) 内表(Internal Table)
- ABAP program lines are wider than the internal table
- abap create dynamic structure and dynamic table
- Sorted table
- Truth table for AND operator
- Create a maintenance view for SAP standard table
- Indexing NULL table column values for fast SQL performance
- Indexing NULL table column values for fast SQL performance
- Java获得当前日期是星期几
- java开发网易电话面试 一面总结
- vue-cli实现多页面多路由
- Tomcat 目录结构
- SpringBoot 更换Banner图
- ABAP Internal Table Performance for STANDARD, SORTED and HASHED Table
- u-boot 分析之 默认环境变量配置
- SVN服务器搭建和使用
- 按关键字搜索自己的CSDN博客
- TI单节电量计基本介绍及常见问题解答
- Java工厂设计模式
- JVM学习---- G1收集器深入学习
- 4556: [Tjoi2016&Heoi2016]字符串
- 创建脱离线程 pthread_attr_setdetachstate