如何使用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RFC 同步非同步呼叫例項非同步
- 如何在 SAP BTP ABAP 程式設計環境裡直接呼叫 ABAP On-Premises 系統的 RFC 函式程式設計REM函式
- 使用phpAnalysis打造PHP應用非侵入式效能分析器PHP
- 使用非同步元件優化Vue應用程式的效能非同步元件優化Vue
- web應用中使用快取提升效能的8種武器Web快取
- 使用 ABAP 控制 Android 原生應用Android
- SAP ABAP RFC介面通用日誌工具:abap fm logger
- 效能魔方mmTrix雲應用效能管理,助力客戶提升使用者體驗
- 從同步原語看非阻塞同步以及Java中的應用Java
- 教你實現快應用storage介面同步呼叫
- 使用 Prometheus 監控 SAP ABAP 應用程式Prometheus
- 如何合理使用 CPU 管理策略,提升容器效能?
- javascript如何呼叫本地應用程式JavaScript
- 移動應用開發者必讀:提升應用效能的13種方式
- 提升 Node.js 應用效能的 5 個技巧Node.js
- 如何提升Web前端效能?Web前端
- asp.net 應用程式中同步方法呼叫非同步方法無響應解決方法ASP.NET非同步
- 如何使用Prometheus採集SAP ABAP Netweaver的應用日誌資料Prometheus應用日誌
- 使用Excel呼叫ABAP系統的函式Excel函式
- 應用出海,如何使用蘋果 CallKit 提升網路通話體驗蘋果
- [轉載]使用非同步 I/O 大大提高應用程式的效能非同步
- KubeSphere 助力提升研發效能的應用實踐分享
- JProfiler for Mac/win- 提升Java應用程式的效能利器!MacJava
- Web 應用效能提升 10 倍的 10 個建議Web
- 如何檢測手機惡意應用?整合華為應用安全檢測,提升App使用安全APP
- 同步阻塞、同步非阻塞、多路複用的介紹
- 如何提升網站的效能?網站
- 使用 Traefik 提高 WebSocket 應用效能Web
- SAP ABAP呼叫WEBAPI(一)WebAPI
- 提升50%!Presto如何提升Hudi表查詢效能?REST
- 應用OSCache提升J2EE系統執行效能
- 如何提升 Web 應用的程式碼質量Web
- Flutter應用如何快速增加雲同步功能Flutter
- React多頁面應用3(webpack效能提升,包括打包效能、提取公共包等)ReactWeb
- WebApi介面 - 如何在應用中呼叫webapi介面WebAPI
- HHVM 是如何提升 PHP 效能的?PHP
- 如何使用 ABAP 程式消費 SAP ABAP OData 服務
- 系統效能提升優先法寶|快取應用實踐快取