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:
测试结果
AG3上取440个attachment,一次用串行的方式执行,另一次分成4个线程分别执行,每个线程里仍然call的未优化的代码。用代码比较确保两次执行返回的结果完全一致。
详细测试数据如下:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关文章
- Silverlight实用窍门系列:49.Silverlight中管理独立存储--Isolated Storage【附带实例源码】
- Vue的computed(计算属性)使用实例之TodoList
- JAVA-MyEclipse第一个实例
- spring学习笔记(18)使用JNDI模拟访问应用服务器多数据源实例
- 新计算 新网络 新旗舰:华为云C6实例首测
- 股票买卖实例
- Runtime 方法替换 和 动态添加实例方法 结合使用
- php对mysql简单读取的实例
- 使用python装饰器计算函数运行时间的实例
- EC2(elastic compute cloud,弹性计算云,又称EC2实例)
- ASM实例挂载磁盘失败错误日志
- VRRP配置实例
- ASP.NET Core 6框架揭秘实例演示[19]:数据加解密与哈希
- thymeleaf支持java8的日期实例
- ABAP并发计算的一个实例
- iOS swift 设置电量 计算属性实例
- iOS(swift)计算属性(Computed Properties)使用实例
- 脑细胞膜等效神经网路12分类实例
- 一些常用的mysql语句实例-以后照写2
- Pytorch 中 torch.flatten() 和 torch.nn.Flatten() 实例详解
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第七步---英雄要升级&属性--解析csv配置文件
- JMeter:集合点,同步定时器的应用实例
- kubernetes要实现的目标——随机关掉一台机器,看你的服务能否正常;减少的应用实例能否自动迁移并恢复到其他节点;服务能否随着流量进行自动伸缩
- 机器学习经典实例:使用pytorch 完成线性回归分析