如何使用ABAP非同步RFC呼叫提升應用效能
採用如下report 研究asynchronous RFC call的效能提升:
PARAMETERS: num TYPE i OBLIGATORY DEFAULT 10.
DATA:ls_line TYPE zjerry1,
lv_start TYPE i,
lv_end TYPE i,
lv_taskid TYPE c LENGTH 8,
lv_index TYPE c LENGTH 4,
lv_finished TYPE i,
lv_count TYPE i.
START-OF-SELECTION.
PERFORM solution2.
FORM solution2.
DELETE FROM zjerry1.
GET RUN TIME FIELD lv_start.
DO num TIMES.
lv_index = sy-index.
lv_taskid = 'Task' && lv_index.
CALL FUNCTION 'ZINSERT' STARTING NEW TASK lv_taskid PERFORMING callback ON END OF TASK
EXPORTING
iv_index = CONV comm_product-product_id( sy-index ).
ENDDO.
WAIT UNTIL lv_finished = num.
GET RUN TIME FIELD lv_end.
lv_end = lv_end - lv_start.
WRITE: / 'Solution2: ' , lv_end COLOR COL_NEGATIVE.
SELECT COUNT( * ) INTO lv_count FROM zjerry1.
ASSERT lv_count = num.
ENDFORM.
FORM callback USING p_task TYPE clike.
ADD 1 TO lv_finished.
ENDFORM.
function module ZINSERTmonitor的是一個比較費時的操作,在末尾會有一個DB的insertion:
DATA: ls_line TYPE zjerry1,
lv_cal TYPE timestamp,
lv_cal1 TYPE timestamp.
GET TIME STAMP FIELD lv_cal.
DO 10000 TIMES.
lv_cal = lv_cal + 1.
lv_cal = ( lv_cal * 13 ) / 12.
DO 100 TIMES.
GET TIME STAMP FIELD lv_cal1.
lv_cal = lv_cal * 13 / 17.
ENDDO.
ENDDO.
ls_line-code_value = iv_index.
INSERT zjerry1 FROM ls_line.
ASSERT sy-subrc = 0.
COMMIT WORK AND WAIT.
DB的結構非常簡單:
如果在report 裡直接呼叫ZINSERT, response time為4.493 seconds.
如果在DO 2 TIMES裡呼叫兩次ZINSERT, 兩次function module call是依次執行的,response time為8.493 seconds
如果用report 以引數2 以非同步的方式呼叫ZINSERT 2次,report 本身的response time為3.074 seconds:
number = 3:
number = 5:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2678582/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 preloadRouteComponents 提升 Nuxt 應用的效能UX
- 如何在 SAP BTP ABAP 程式設計環境裡直接呼叫 ABAP On-Premises 系統的 RFC 函式程式設計REM函式
- SAP ABAP RFC介面通用日誌工具:abap fm logger
- 使用 ABAP 控制 Android 原生應用Android
- 使用phpAnalysis打造PHP應用非侵入式效能分析器PHP
- 使用非同步元件優化Vue應用程式的效能非同步元件優化Vue
- 教你實現快應用storage介面同步呼叫
- 從同步原語看非阻塞同步以及Java中的應用Java
- 使用 Prometheus 監控 SAP ABAP 應用程式Prometheus
- 如何合理使用 CPU 管理策略,提升容器效能?
- 如何使用Prometheus採集SAP ABAP Netweaver的應用日誌資料Prometheus應用日誌
- asp.net 應用程式中同步方法呼叫非同步方法無響應解決方法ASP.NET非同步
- 使用Excel呼叫ABAP系統的函式Excel函式
- 如何提升Web前端效能?Web前端
- JProfiler for Mac/win- 提升Java應用程式的效能利器!MacJava
- KubeSphere 助力提升研發效能的應用實踐分享
- 同步阻塞、同步非阻塞、多路複用的介紹
- 使用 Traefik 提高 WebSocket 應用效能Web
- 如何使用 dotTrace 來診斷 netcore 應用的效能問題NetCore
- SAP ABAP呼叫WEBAPI(一)WebAPI
- 應用出海,如何使用蘋果 CallKit 提升網路通話體驗蘋果
- Flutter應用如何快速增加雲同步功能Flutter
- 如何檢測手機惡意應用?整合華為應用安全檢測,提升App使用安全APP
- 提升50%!Presto如何提升Hudi表查詢效能?REST
- 如何提升 Web 應用的程式碼質量Web
- ArkTS 應用的程式碼混淆策略:提升安全性與效能
- 系統效能提升優先法寶|快取應用實踐快取
- 如何使用 ABAP 程式消費 SAP ABAP OData 服務
- python中非同步非阻塞如何實現Python非同步
- 同步非同步,阻塞非阻塞非同步
- 非同步、同步、阻塞、非阻塞非同步
- [譯] 使用 PhpFastCache 提升網站效能PHPAST網站
- 如何提升JSON.stringify的效能?JSON
- 如何提升JSON.stringify()的效能?JSON
- 如何找到ABAP裡被動態呼叫的update function moduleFunction
- 如何改善應用啟動效能 | Facebook 應用的經驗分享
- Flutter | 效能優化——如何避免應用 jankFlutter優化
- 如何提高你的 React 應用的效能React