ABAP并发计算的一个实例

简介: 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

相关文章
|
存储 XML BI
通俗易懂的 SAP ABAP 会话管理(Session Management)概念讲解,包含具体的实例试读版
通俗易懂的 SAP ABAP 会话管理(Session Management)概念讲解,包含具体的实例试读版
通俗易懂的 SAP ABAP 会话管理(Session Management)概念讲解,包含具体的实例试读版
通俗易懂的 SAP ABAP 会话管理(Session Management)概念讲解,包含具体的实例试读版
171 0
|
测试技术
ABAP 并发执行的威力
Sent: Thursday, 28 January, 2016 7:21 PM
109 0
ABAP 并发执行的威力
|
并行计算 Java
ABAP并发计算的一个实例
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.
ABAP并发计算的一个实例
一个ABAP重构的实例:CL_CRM_LEAD_CREATE~SELECT_CAMPAIGNS_BY_SQL
Created by Wang, Jerry, last modified on Nov 12, 2015
134 0
|
5月前
|
前端开发 开发工具 Android开发
小技巧分享 - 使用 Visual Studio Code 查看和修改 ABAP 代码试读版
小技巧分享 - 使用 Visual Studio Code 查看和修改 ABAP 代码试读版
小技巧分享 - 使用 Visual Studio Code 查看和修改 ABAP 代码试读版
|
5月前
|
BI
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
工具分享 - 将一个 ABAP Function Group 内所有 Function Module 按照代码行数从高到低排序并显示
|
5月前
|
开发者 供应链 BI
SAP ABAP CALL SUBSCREEN 代码解析
SAP ABAP CALL SUBSCREEN 代码解析
|
5月前
|
存储 数据处理 开发者
ABAP 如何把 unicode 代码点转换成字符
ABAP 如何把 unicode 代码点转换成字符

热门文章

最新文章

下一篇
无影云桌面