天翼云代理,天翼云代理商,北京代理商
天翼云2.5折专线:18510009100/18510009200(全国市话)

ABAP并发计算的一个实例

2021-11-25 09:05:59

During myTask performance optimization, I realized that currently the read implementation of 5 expanded nodes: Userstatus, document history, document item, attachment etc are done sequentially.


如果看看现在 Java8的parallelStream 的一些sample code, 再来review task offline 5个node的读取, 发现它们也满足并行计算的三要素:


(1) 可重入

(2) Immutable state

(3) Read only data access


因此我们可以考虑把每个node 数据的读取分别放到一个"新线程"(用ABAP术语来讲,应该是新的internal session )来做,这样就和gateway 后台实现batch操作的设计完全一致了。Gateway在SPRO里有个配置控制batch request是串行还是并行实现,默认是并行。

理论上假设5个node 分别消耗的时间是1,2,3,4,5秒. 现在的串行实现,最后的时间是sum(1,2,3,4,5) = 15秒,改成并行处理后是max(1,2,3,4,5) 约等于5秒(加上少许线程同步的时间)

具体的测试report参考AG3 report ZATTACHMENT_SEQUEN_VS_PARALL:

image.png


测试结果

AG3上取440个attachment,一次用串行的方式执行,另一次分成4个线程分别执行,每个线程里仍然call的未优化的代码。用代码比较确保两次执行返回的结果完全一致。

image.png


详细测试数据如下:


 image.png

12年经验 · 提供上云保障

服务热线:132-6161-6125(手机) 400-150-1900(全国市话)

站内导航: 天翼云服务器价格| 天翼云购买流程| 天翼云代理| 北京天翼云代理商| 杭州天翼云代理| 深圳天翼云代理商| 钉钉代理商| 阿里云代理| 公司官网

我公司收款账号| 天翼云备案系统

CopyRight © 2019 天翼云代理商. All Rights Reserved 京ICP备2024071855号-7 管理-北京优胜智连科技有限公司