日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Asynchronous RFC call 拆分time consuming task

發布時間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Asynchronous RFC call 拆分time consuming task 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Created by Jerry Wang, last modified on May 05, 2014 Go to start of metadata

設計一個function module 模擬一個比較花費CPU計算時間的time consuming task.

FUNCTION zinsert. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(IV_INDEX) TYPE COMM_PRODUCT-PRODUCT_ID *"----------------------------------------------------------------------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.ENDFUNCTION.

在function 執行末尾會有一個database 的insert operation. Database table structure如下:

下面的report可以比較兩種調用ZINSERT 方式的性能差異.

方法1是在循環里順序調用ZINSERT,每次function call結束之后再進行下一次function調用。方法二是采用asynchronous RFC call的方式來并發操作.

兩種方式的性能差異見如下圖:

REPORT ztable.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 solution1.PERFORM solution2.FORM solution1.DELETE FROM zjerry1.GET RUN TIME FIELD lv_start.DO num TIMES.CALL FUNCTION 'ZINSERT'EXPORTINGiv_index = CONV comm_product-product_id( sy-index ).ENDDO.GET RUN TIME FIELD lv_end.lv_end = lv_end - lv_start.WRITE: / 'solution1: ' , lv_end COLOR COL_NEGATIVE. ENDFORM.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 TASKEXPORTINGiv_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.

總結

以上是生活随笔為你收集整理的使用Asynchronous RFC call 拆分time consuming task的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。