ABAP--如何暂停其他进程的处理,加速当前程序的处理速度
2010-12-09 15:47
281 查看
REPORT ZHGUPALL NO STANDARD PAGE HEADING.
************************************************************************
* This is a test program to measure - how much faster a program can
* process it's job if all the other workprocesses are halted.
* The program identifies the dialog and batch workprocesses that are
* running other abaps and sends them a UNIX 24 (halt) signal.
* When it has finished the job, it releases the other workprocesses
* by sending them a signal 26. This method can be hazardous too.
* One such situation can be a deadlock, when the program requires a
* resource, that is locked by an abap that has been paused.
************************************************************************
PARAMETERS: SELFISH.
TABLES: TRDIR.
DATA: T1 TYPE I,
T2 TYPE I,
STRING(20) VALUE 'load',
LOCK(30) VALUE 'kill -24',
ULOCK(30) VALUE 'kill -26',
OPCODE TYPE X VALUE 2.
DATA: BEGIN OF LIST OCCURS 10.
INCLUDE STRUCTURE MSXXLIST.
DATA: END OF LIST.
DATA: BEGIN OF WPLIST OCCURS 10.
INCLUDE STRUCTURE WPINFO.
DATA: END OF WPLIST.
DATA: BEGIN OF TABL OCCURS 0,
LINE(200),
END OF TABL.
DATA: BEGIN OF ITAB OCCURS 500,
LINE(72),
END OF ITAB.
*
* Get the list of dialog workprocesses
CALL FUNCTION 'TH_SERVER_LIST'
TABLES
LIST = LIST.
READ TABLE LIST WITH KEY HOST = SY-HOST.
CALL FUNCTION 'TH_WPINFO'
EXPORTING
SRVNAME = LIST-NAME
TABLES
WPLIST = WPLIST.
*
* Lock all the DIA and BTC but mine
IF SELFISH = 'Y'.
LOOP AT WPLIST.
IF WPLIST-WP_TYP = 'DIA' OR WPLIST-WP_TYP = 'BTC'.
IF WPLIST-WP_BNAME <> SY-UNAME.
LOCK+11(8) = WPLIST-WP_PID.
WRITE: / LOCK.
CALL 'SYSTEM' ID 'COMMAND' FIELD LOCK
ID 'TAB' FIELD TABL-*SYS*.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
SKIP.
*
* Measure runtime
GET RUN TIME FIELD T1.
*
* This is my processing section VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
SELECT * FROM TRDIR WHERE NAME LIKE 'I%'.
READ REPORT TRDIR-NAME INTO ITAB.
LOOP AT ITAB.
IF ITAB-LINE CS STRING.
WRITE: / TRDIR-NAME.
EXIT.
ENDIF.
ENDLOOP.
ENDSELECT.
* End of processing ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
************************************************************************
*
* Measure runtime
GET RUN TIME FIELD T2.
T2 = T2 - T1.
SKIP.
WRITE: 'runtime:', T2.
SKIP.
*
* Unock the other guys
IF SELFISH = 'Y'.
LOOP AT WPLIST.
IF WPLIST-WP_TYP = 'DIA' OR WPLIST-WP_TYP = 'BTC'.
IF WPLIST-WP_BNAME <> SY-UNAME.
ULOCK+11(8) = WPLIST-WP_PID.
WRITE: / ULOCK.
CALL 'SYSTEM' ID 'COMMAND' FIELD ULOCK
ID 'TAB' FIELD TABL-*SYS*.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
Sourcelink: http://www.kabai.com/abaps/z101.htm
************************************************************************
* This is a test program to measure - how much faster a program can
* process it's job if all the other workprocesses are halted.
* The program identifies the dialog and batch workprocesses that are
* running other abaps and sends them a UNIX 24 (halt) signal.
* When it has finished the job, it releases the other workprocesses
* by sending them a signal 26. This method can be hazardous too.
* One such situation can be a deadlock, when the program requires a
* resource, that is locked by an abap that has been paused.
************************************************************************
PARAMETERS: SELFISH.
TABLES: TRDIR.
DATA: T1 TYPE I,
T2 TYPE I,
STRING(20) VALUE 'load',
LOCK(30) VALUE 'kill -24',
ULOCK(30) VALUE 'kill -26',
OPCODE TYPE X VALUE 2.
DATA: BEGIN OF LIST OCCURS 10.
INCLUDE STRUCTURE MSXXLIST.
DATA: END OF LIST.
DATA: BEGIN OF WPLIST OCCURS 10.
INCLUDE STRUCTURE WPINFO.
DATA: END OF WPLIST.
DATA: BEGIN OF TABL OCCURS 0,
LINE(200),
END OF TABL.
DATA: BEGIN OF ITAB OCCURS 500,
LINE(72),
END OF ITAB.
*
* Get the list of dialog workprocesses
CALL FUNCTION 'TH_SERVER_LIST'
TABLES
LIST = LIST.
READ TABLE LIST WITH KEY HOST = SY-HOST.
CALL FUNCTION 'TH_WPINFO'
EXPORTING
SRVNAME = LIST-NAME
TABLES
WPLIST = WPLIST.
*
* Lock all the DIA and BTC but mine
IF SELFISH = 'Y'.
LOOP AT WPLIST.
IF WPLIST-WP_TYP = 'DIA' OR WPLIST-WP_TYP = 'BTC'.
IF WPLIST-WP_BNAME <> SY-UNAME.
LOCK+11(8) = WPLIST-WP_PID.
WRITE: / LOCK.
CALL 'SYSTEM' ID 'COMMAND' FIELD LOCK
ID 'TAB' FIELD TABL-*SYS*.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
SKIP.
*
* Measure runtime
GET RUN TIME FIELD T1.
*
* This is my processing section VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
SELECT * FROM TRDIR WHERE NAME LIKE 'I%'.
READ REPORT TRDIR-NAME INTO ITAB.
LOOP AT ITAB.
IF ITAB-LINE CS STRING.
WRITE: / TRDIR-NAME.
EXIT.
ENDIF.
ENDLOOP.
ENDSELECT.
* End of processing ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
************************************************************************
*
* Measure runtime
GET RUN TIME FIELD T2.
T2 = T2 - T1.
SKIP.
WRITE: 'runtime:', T2.
SKIP.
*
* Unock the other guys
IF SELFISH = 'Y'.
LOOP AT WPLIST.
IF WPLIST-WP_TYP = 'DIA' OR WPLIST-WP_TYP = 'BTC'.
IF WPLIST-WP_BNAME <> SY-UNAME.
ULOCK+11(8) = WPLIST-WP_PID.
WRITE: / ULOCK.
CALL 'SYSTEM' ID 'COMMAND' FIELD ULOCK
ID 'TAB' FIELD TABL-*SYS*.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
Sourcelink: http://www.kabai.com/abaps/z101.htm
相关文章推荐
- ABAP--如何暂停其他进程的处理,加速当前程序的处理速度
- VC程序中如何结束系统正在运行的其他进程
- java多进程 -CD7-孙鑫-(1)-程序/进程/线程/设置后台线程/将当前线程暂停
- 如何使PC上运行的程序不能退出,并且用户只能使用当前正在运行的程序。不能使用PC上的其他程序
- 教你如何处理加速电脑速度(转载)
- 当前cpu发生__do_kernel_fault时,其他cpu是如何处理的呢?
- system用户进程或服务进程以特定用户启动其他程序的处理
- 如何启动一个程序一附加命令行选项启动(创建进程以命令行附加方式 配置 其他启动项)
- 精选20道Java多线程面试题并有答案! 互联网IT技术 2017-10-14 00:02 1. 多线程使用的优缺点? 优点: (1)多线程技术使程序的响应速度更快 (2)当前没有进行处理的任务
- 调用信号处理程序被捕捉的信号自动地加到进程的当前信号屏蔽字中signal() sigpending()
- 如何在程序异常退出前输出当前进程的堆栈信息 Backtraces
- VC程序中如何结束系统正在运行的其他进程 以及本程序自身
- JAVA程序与其他进程的数据通信
- linux文件是否被当前进程外的其他进程打开
- c# 关闭其他程序窗口/进程
- 如何加速Oracle大批量数据处理
- windows下如何提高程序启动速度
- 如何让当前页面3秒以后自动跳转到其他页面
- 如何查看Linux上程序或进程用到的库
- 如何在其他bundle中引用DAO层的持久化文件以及事务处理