White smoke... We have a new winner!
STEPNAME PROCSTEP PROGRAM RC EXCP CPU SRB CLOCK SERV
TS10001 TESTREXX IKJEFT01 00 18 .01 .00 .06 518
TS10010 TESTREXX IKJEFT01 00 19 .01 .00 .03 517
TS10100 TESTREXX IKJEFT01 00 18 .01 .00 .04 537
TS11K TESTREXX IKJEFT01 00 22 .01 .00 .04 572
TS110K TESTREXX IKJEFT01 00 19 .02 .00 .04 859
TS1100K TESTREXX IKJEFT01 00 19 .07 .00 .11 3891
TS11M TESTREXX IKJEFT01 00 19 .64 .00 .94 33959
TS20001 TESTREXX IKJEFT01 00 19 .01 .00 .14 556
TS20010 TESTREXX IKJEFT01 00 19 .01 .00 .03 495
TS20100 TESTREXX IKJEFT01 00 19 .01 .00 .03 519
TS21K TESTREXX IKJEFT01 00 19 .01 .00 .03 550
TS210K TESTREXX IKJEFT01 00 19 .02 .00 .06 837
TS2100K TESTREXX IKJEFT01 00 22 .07 .00 .10 3461
TS21M TESTREXX IKJEFT01 00 19 .57 .00 .69 29987
TS30001 TESTREXX IKJEFT01 00 19 .01 .00 .03 538
TS30010 TESTREXX IKJEFT01 00 19 .01 .00 .03 495
TS30100 TESTREXX IKJEFT01 00 19 .01 .00 .05 507
TS31K TESTREXX IKJEFT01 00 19 .01 .00 .04 591
TS310K TESTREXX IKJEFT01 00 19 .02 .00 .05 886
TS3100K TESTREXX IKJEFT01 00 19 .08 .00 .12 4190
TS31M TESTREXX IKJEFT01 00 22 .70 .00 .85 36875
TS40001 TESTREXX IKJEFT01 00 19 .01 .00 .03 549
TS40010 TESTREXX IKJEFT01 00 19 .01 .00 .03 524
TS40100 TESTREXX IKJEFT01 00 19 .01 .00 .04 598
TS41K TESTREXX IKJEFT01 00 19 .01 .00 .03 594
TS410K TESTREXX IKJEFT01 00 19 .02 .00 .07 813
TS4100K TESTREXX IKJEFT01 00 19 .05 .00 .08 2893
TS41M TESTREXX IKJEFT01 00 19 .44 .00 .55 23293
Thanks,
Rob
-----Original Message-----
From: Höglund Lars <
Lars.H...@ALECTA.SE>
To: TSO-REXX <
TSO-...@VM.MARIST.EDU>
Sent: Tue, Mar 12, 2013 11:30 pm
Subject: SV: [TSO-REXX] REXX performance Testing
Append a new one, TESTSTR4
/* REXX - TESTSTR4 */
rg loops
tring = '1abcde'
o loops
if abbrev(string,'1') then nop
nd
//Lasse
-----Ursprungligt meddelande-----
rån: TSO REXX Discussion List [mailto:
TSO-...@VM.MARIST.EDU] För Robert Zenuk
kickat: den 12 mars 2013 17:35
ill:
TSO-...@VM.MARIST.EDU
mne: [TSO-REXX] REXX performance Testing
Based on the intent of the recent "Tuning" thread I just did some actual
erformance testing to compare different techniques for a project I'm working on
nd wanted to share. Having heard some axioms for years and never doing my own
esting to see real numbers I was curious if different approaches to string
andling, parsing and built-in function nesting would make a noticeable
ifference. So, I constructed a couple tests and measured the results. I am
ot going to test everything nor am I willing to try additional testing for
veryone's curiosity since I do have a project with a deadline. I am willing to
ost what I did (the test code and the JCL). This should be enough for others
o replicate the approach for their own curiosity. Hopefully others will share
heir results too if more testing is done.
My first test was to compare the SUBSTR, LEFT and PARSE approaches to pull off
he first character of a string. This is something that will occur in my
roject millions of times.
Here are my 3 test EXECs.
/* REXX - TESTSTR1 */
rg loops
tring = '1abcde'
o loops
if substr(string,1,1) = '1' then nop
nd
/* REXX - TESTSTR2 */
rg loops
tring = '1abcde'
o loops
if left(string,1) = '1' then nop
nd
/* REXX - TESTSTR3 */
rg loops
tring = '1abcde'
o loops
parse var string 1 x 2 rest
if x = '1' then nop
nd
Here is my test JCL
//jobcard...
/***************************************************************
/* TSO BATCH JOB *
/***************************************************************
/SYSEXEC PROC LOOPS=1,PROG=TESTSTR1
/TESTREXX EXEC PGM=IKJEFT01,PARM='&PROG &LOOPS'
/SYSEXEC DD DSN=MY.EXEC,DISP=SHR
/SYSTSPRT DD SYSOUT=*
/SYSTSIN DD DUMMY
/ PEND
/***************************************************************
/* SYSEXEC TIMINGS *
/***************************************************************
/TS10001 EXEC SYSEXEC,LOOPS=1,PROG=TESTSTR1
/TS10010 EXEC SYSEXEC,LOOPS=10,PROG=TESTSTR1
/TS10100 EXEC SYSEXEC,LOOPS=100,PROG=TESTSTR1
/TS11K EXEC SYSEXEC,LOOPS=1000,PROG=TESTSTR1
/TS110K EXEC SYSEXEC,LOOPS=10000,PROG=TESTSTR1
/TS1100K EXEC SYSEXEC,LOOPS=100000,PROG=TESTSTR1
/TS11M EXEC SYSEXEC,LOOPS=1000000,PROG=TESTSTR1
/***************************************************************
/TS20001 EXEC SYSEXEC,LOOPS=1,PROG=TESTSTR2
/TS20010 EXEC SYSEXEC,LOOPS=10,PROG=TESTSTR2
/TS20100 EXEC SYSEXEC,LOOPS=100,PROG=TESTSTR2
/TS21K EXEC SYSEXEC,LOOPS=1000,PROG=TESTSTR2
/TS210K EXEC SYSEXEC,LOOPS=10000,PROG=TESTSTR2
/TS2100K EXEC SYSEXEC,LOOPS=100000,PROG=TESTSTR2
/TS21M EXEC SYSEXEC,LOOPS=1000000,PROG=TESTSTR2
/***************************************************************
/TS30001 EXEC SYSEXEC,LOOPS=1,PROG=TESTSTR3
/TS30010 EXEC SYSEXEC,LOOPS=10,PROG=TESTSTR3
/TS30100 EXEC SYSEXEC,LOOPS=100,PROG=TESTSTR3
/TS31K EXEC SYSEXEC,LOOPS=1000,PROG=TESTSTR3
/TS310K EXEC SYSEXEC,LOOPS=10000,PROG=TESTSTR3
/TS3100K EXEC SYSEXEC,LOOPS=100000,PROG=TESTSTR3
/TS31M EXEC SYSEXEC,LOOPS=1000000,PROG=TESTSTR3
Here are my results
STEPNAME PROCSTEP PROGRAM RC EXCP CPU SRB CLOCK SERV
S10001 TESTREXX IKJEFT01 00 41 .01 .00 .24 709
S10010 TESTREXX IKJEFT01 00 43 .01 .00 .05 587
S10100 TESTREXX IKJEFT01 00 41 .01 .00 .07 627
S11K TESTREXX IKJEFT01 00 45 .01 .00 .07 590
S110K TESTREXX IKJEFT01 00 42 .02 .00 .06 948
S1100K TESTREXX IKJEFT01 00 42 .08 .00 .32 4045
S11M TESTREXX IKJEFT01 00 44 .65 .00 1.30 34421
S20001 TESTREXX IKJEFT01 00 44 .01 .00 .21 625
S20010 TESTREXX IKJEFT01 00 42 .01 .00 .05 586
S20100 TESTREXX IKJEFT01 00 42 .01 .00 .07 659
S21K TESTREXX IKJEFT01 00 43 .01 .00 .06 750
S210K TESTREXX IKJEFT01 00 44 .02 .00 .06 935
S2100K TESTREXX IKJEFT01 00 46 .07 .00 .15 3614
S21M TESTREXX IKJEFT01 00 45 .57 .00 .89 30311
S30001 TESTREXX IKJEFT01 00 42 .01 .00 .10 704
S30010 TESTREXX IKJEFT01 00 43 .01 .00 .10 585
S30100 TESTREXX IKJEFT01 00 42 .01 .00 .05 530
S31K TESTREXX IKJEFT01 00 44 .01 .00 .05 634
S310K TESTREXX IKJEFT01 00 43 .02 .00 .11 957
S3100K TESTREXX IKJEFT01 00 45 .08 .00 .17 4243
S31M TESTREXX IKJEFT01 00 42 .70 .00 .98 37131
LEFT wins!
My second test was to further test the first character and see if it was
umeric. I tested nesting built-in functions versus separate calls for each.
Here are my 2 EXECs
/* REXX - TESTNST1 */
rg loops
tring = '1abcde'
o loops
first = left(string,1)
type = datatype(first)
if type = 'NUM' then nop
nd
/* REXX - TESTNST2 */
rg loops
tring = '1abcde'
o loops
if datatype(left(string,1)) = 'NUM' then nop
nd
Here is my JCL
//jobcard...
/***************************************************************
/* TSO BATCH JOB *
/***************************************************************
/SYSEXEC PROC LOOPS=1,PROG=TESTNST1
/TESTREXX EXEC PGM=IKJEFT01,PARM='&PROG &LOOPS'
/SYSEXEC DD DSN=OPSROZ.EXEC,DISP=SHR
/SYSTSPRT DD SYSOUT=*
/SYSTSIN DD DUMMY
/ PEND
/***************************************************************
/* SYSEXEC TIMINGS *
/***************************************************************
/TS10001 EXEC SYSEXEC,LOOPS=1,PROG=TESTNST1
/TS10010 EXEC SYSEXEC,LOOPS=10,PROG=TESTNST1
/TS10100 EXEC SYSEXEC,LOOPS=100,PROG=TESTNST1
/TS11K EXEC SYSEXEC,LOOPS=1000,PROG=TESTNST1
/TS110K EXEC SYSEXEC,LOOPS=10000,PROG=TESTNST1
/TS1100K EXEC SYSEXEC,LOOPS=100000,PROG=TESTNST1
/TS11M EXEC SYSEXEC,LOOPS=1000000,PROG=TESTNST1
/***************************************************************
/TS20001 EXEC SYSEXEC,LOOPS=1,PROG=TESTNST2
/TS20010 EXEC SYSEXEC,LOOPS=10,PROG=TESTNST2
/TS20100 EXEC SYSEXEC,LOOPS=100,PROG=TESTNST2
/TS21K EXEC SYSEXEC,LOOPS=1000,PROG=TESTNST2
/TS210K EXEC SYSEXEC,LOOPS=10000,PROG=TESTNST2
/TS2100K EXEC SYSEXEC,LOOPS=100000,PROG=TESTNST2
/TS21M EXEC SYSEXEC,LOOPS=1000000,PROG=TESTNST2
The results
STEPNAME PROCSTEP PROGRAM RC EXCP CPU SRB CLOCK SERV
S10001 TESTREXX IKJEFT01 00 17 .01 .00 .19 547
S10010 TESTREXX IKJEFT01 00 18 .01 .00 .04 487
S10100 TESTREXX IKJEFT01 00 17 .01 .00 .04 498
S11K TESTREXX IKJEFT01 00 21 .01 .00 .11 581
S110K TESTREXX IKJEFT01 00 18 .02 .00 .10 1151
S1100K TESTREXX IKJEFT01 00 18 .12 .00 .20 6367
S11M TESTREXX IKJEFT01 00 18 1.11 .00 1.40 58870
S20001 TESTREXX IKJEFT01 00 18 .01 .00 .08 537
S20010 TESTREXX IKJEFT01 00 18 .01 .00 .09 515
S20100 TESTREXX IKJEFT01 00 18 .01 .00 .13 533
S21K TESTREXX IKJEFT01 00 18 .01 .00 .06 579
S210K TESTREXX IKJEFT01 00 18 .02 .00 .04 901
S2100K TESTREXX IKJEFT01 00 21 .08 .00 .23 4490
S21M TESTREXX IKJEFT01 00 18 .76 .00 1.15 40075
Nesting wins!
Rob
---------------------------------------------------------------------
or TSO-REXX subscribe / signoff / archive access instructions, send email to
IST...@VM.MARIST.EDU with the message: INFO TSO-REXX
----------------------------------------------------------------------
or TSO-REXX subscribe / signoff / archive access instructions,