赛锐信息:ABAP程序优化的一些总结(abap性能优化)

赛锐信息:ABAP程序优化的一些总结(abap性能优化)

赛锐信息,SAP ERP定制,ERP定制

第一部分 程序运行时间的优化

优化的重点之一是运行时间,影响运行时间的因素有很多,首先程序本身的话,从CPU角度讲,指令越少自然运行时间越快,会引发CPU大量操作的基本上主要就是对数据量非常大的内表进行循环处理(LOOP)的时候,下面列举一些比较有效的可以优化的地方:

嵌套循环(NESTEDLOOP),如果外循环有N条记录,内循环有M条记录,那么总的循环次数就是N*M,这是需要避免或者优化的,一个比较常用的方法是在LOOP后面加上WHERE条件,这样可以避免了全表循环,在一些特殊场合(比如排序过的内表),可以使用一些编程技巧用INDEX FROM TO直接指定需要LOOP的内表所在行。

二分法查找(BINARYSEARCH):假如LOOP里有需要用到READ TABLE去查询另外一个内表里的某条记录,那么先对那个内表进行需要比较的KEY值的排序,再用BINARY SEARCH能显著提高查询速度。如果不指定BINARY SEARCH关键字,系统会按顺序作全表扫描和比较,扫描一个有N条记录的内表,在最坏情况下需要比较N次(假如所需要的记录正好在内表的最后一条),而用BINARYSEARCH查找是折半查找,则只需要比较LOGN次。比如当N是100万时,普通查找最多可能查找100万次,而折半查找最多只需要查找20次。

FIELD-SYMBOL:LOOP时使用FS来代替结构(工作区),这样的好处是直接定位到内表的某条记录,而不是复制这条记录到结构里(所以在修改内表内容时,使用指针不需要MODIFY命令,因为指针是直接修改内表的内容,而结构只是内表当前行的一个拷贝,修改完结构之后需要通过MODIFY复制回内表)。同样的READTABLE也一样可以ASSIGNING到一个指针里,但是和LOOP不同的是,LOOP ASSIGNING是必定成功的,而READ TABLE ASSINGING可能失败,当失败时,这个指针是不能使用的,不然运行时会发生指针未分配的DUMP。建议可以定义一个同类型的结构(初始值),如果READ TABLEASSIGNING失败,就把指针分配到这个结构里。
*使用指针来进行LOOP基本上总是有利的且没有什么副作用,但是个人认为从原理上看,有的时候可能优化的重点并不是LOOP时用指针去代替结构,假如LOOP里的数据处理才是重点的话,那么省去复制到结构的这步操作也不会对运行时间产生很大的影响。

数据库操作:这点其实属于数据库开销的方面的优化。LOOP里基本不允许SELECT,一次完整的SELECT所需要的时间相对是较多的(可能只有零点零几秒,但是一旦循环几十万上百万次的话……),一般是先用FOR ALL ENTIRES把全部数据读入另外一个内表,然后和LOOP里面READ TABLE(BINARY SEARCH)来代替。同理在作INSERT和UPDATE的时候,也尽量通过内表批量处理,避免在LOOP里根据结构作单条插入或更新。
*这样做虽然提升了时间上的效率,但内存和数据库传输数据开销是增加了,因为需要从数据库读入更多的数据到内表,可能导致内存不够的问题,具体会在后面的内存空间相关的部分讲。

调用功能模块(Function Module)和方法(Method):有的时候会在LOOP里调用标准的FM,标准的FM通常比较复杂,内部有多层次的调用,里面可能会有SELECT语句,这种情况下可以自己写逻辑从数据库取数来代替调用标准FM。

并行处理(Parallel Processing):并行处理是指开多个进程同时处理,SAP有多种进程,前台进程(DialogProcess)和后台进程(BackgroundProcess)是其中的两种,并行可以分为前台并行(占用前台进程)和后台并行(后台进程),前者采用异步RFC,关键字CALLFUNCTION STARTING NEW TASK,后者采用JOB OPEN和SUBMIT VIA JOB的方法。并行处理是在处理大量数据时非常有用的方式,除了可以显著地提升时间效率之外,也可以解决单个进程有最大内存的限制。但是并行也有局限性,比如说同时处理的数据不能有逻辑上的关联性,而且每个进程的执行先后顺序也是不可预料的。

第二部分 内存空间的优化

SAP Unicode程序,一个C类型的字符占用两个字节(2Byte)。内存设置方面,分配给一个前台进程(Dialog Process)默认是4000000000字节(2000000000的Extended Memory和2000000000的Heap Memory,这个大小可以调整),也就是不到4GB的内存空间,当一个内表的行结构是512个字符(1024个字节时),最多大约可以容纳400万条不到的记录数,如果超过了这个容量,就会发生DUMP或者程序强制关闭。

解决方法是SELECT取数时改为使用SELECT PACKAGE SIZE ENDSELECT分包取出并处理,这样可以在规定的内存大小内完成数据的处理。但是这种方法依然有个小问题,就是在SELECT和ENDSELECT里不支持并行进程(从原理上讲并行会涉及到进程切换,进程切换时会触发一个COMMITWORK,而在SELECTENDSELECT里这是不允许的),如果要达到分包取数并且并行处理的效果,就需要使用OPEN CURSOR和FETCH。

关于赛锐信息

作为SAP的资深合作伙伴,赛锐信息是一家专业提供SAP行业化管理软件解决方案的顾问公司,致力于为企业提供SAP ERP系统咨询服务、IT规划、业务流程优化、信息系统实施、行业信息系统方案开发,运营外包及售后维护等全面的服务方案。已服务1000 家不同行业、规模的大中小型企业客户。在电子高科技、汽车零部件、印刷包装、医疗器械、快消品、专业服务等行业信息化管理领域具有领导性地位。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月27日 上午9:04
下一篇 2023年4月27日 上午9:20

相关推荐

  • 规章制度模板(规章制度模板图片)

    XXXXXXXXXXXXXX公司 XXXXX安字〔2022〕X号 关于印发《安全生产管理制度汇编》的通知 为加强公司安全生产管理工作,完善公司安全管理制度,约束员工不安全行为,公司…

    科研百科 2024年1月25日
    96
  • 风水学与室内装潢科研项目的关系(风水学与室内装潢科研项目)

    风水学与室内装潢科研项目 风水学是一门古老的学科,旨在研究如何通过装饰和布局来改善人类的居住环境。近年来,随着室内装潢行业的快速发展,风水学也逐渐成为了人们生活中不可或缺的一部分。…

    科研百科 2024年4月4日
    80
  • 【环保清风】理顺市县生态环境机构垂管后的党建关系(生态环境部门垂管)

    目前,省以下生态环境机构垂管改革已全面进入实质性操作阶段。江苏所属市县局已全部完成挂牌。市县生态环境机构垂管后,人事任免主体和党组织管理发生了变化。与此同时,市县生态环境机构党的建…

    科研百科 2023年1月31日
    348
  • 大家好本期我们来讲一下施工企业管理软件 #施工管理软件

    工程软件:金石工程项目管理软件。 专为各行业施工企业打造的多项目一体化管控平台。大家好,本期我们来讲一下工程软件。本软件是金石软件公司以众多施工企业管理现状为出发点,深入了解施工现…

    科研百科 2023年9月3日
    70
  • 常用的项目管理软件有哪些

    常用的项目管理软件有哪些 项目管理软件是一种工具,用于帮助项目经理和团队成员跟踪和管理项目进度,资源,和质量。目前市面上有很多不同的项目管理软件可供选择,以下是一些常见的项目管理软…

    科研百科 2024年8月18日
    39
  • 科研团队负责人在团队中的作用

    科研团队负责人在团队中的作用 科研团队负责人是科研团队中最为重要的人物之一,他/她扮演着领导、协调和指导的角色,为整个团队提供了前进的动力和方向。在科研团队中,科研负责人起着非常重…

    科研百科 2024年10月12日
    20
  • 把党建优势转化为企业的发展优势(把党建优势转化为企业的发展优势是什么)

    人民网宁波12月25日电 (蔡汝佳)近日,中共宁波市海曙区委两新工委等单位共同主办了民营企业“党建强、发展强”研讨会,旨在学习贯彻习近平总书记在民营企业座谈会上的重要讲话精神,推动…

    科研百科 2024年6月22日
    57
  • 项目管理软件 微软

    微软作为全球领先的软件公司之一,其项目管理软件解决方案一直是其核心竞争力之一。作为其重要的组成部分,微软的项目管理软件可以帮助企业高效地管理项目,提高项目进展和质量,降低项目风险。…

    科研百科 2024年7月23日
    34
  • 图书馆科研项目

    图书馆科研项目 图书馆作为文化遗产保护的重要机构,一直扮演着传递、传承文化的重要角色。然而,随着科技的进步和社会的发展,图书馆面临着许多挑战。为了应对这些挑战,图书馆需要开展科研项…

    科研百科 2024年12月5日
    0
  • 库存管理系统项目

    库存管理系统项目 库存管理系统是一种用于管理库存的计算机软件系统,可以帮助企业有效地控制库存,提高库存管理的效率和准确性。库存管理系统通常包括采购订单、销售订单、库存库存、库存查询…

    科研百科 2024年12月11日
    0