The first, base code, is just the following to get the overhead of loop control;
         TIMEUSED STORADR=STARTIME,CPU=TOD,LINKAGE=SYSTEM           
LOOPB    DS    0H                                                   
         L     R3,POOLADDR        GET FROM ADDRESS                  
         L     R4,TOADDR          GET TO ADDR                       
         BCT   R9,LOOPB           LOOP THE NEEDED NUMBER OF TIMES   
         TIMEUSED STORADR=ENDTIME,CPU=TOD,LINKAGE=SYSTEM            
         SPACE 3                                                    
         LA    R1,=CL12'BASE CODE'                                  
         BAL   R14,TIMEOUT                                          

The second case was just a move of 1K using four MVC instructions in a row, 
which is the fastest.

All the others are just $MVC macro vs MVCL instruction.

Chris Blaicher
Technical Architect
Precisely.com


-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On 
Behalf Of Mike Hochee
Sent: Tuesday, October 20, 2020 4:40 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Conditional MVCL macro?

This message originated Externally. Use proper judgement and caution with 
attachments, links, or responses.


Thanks for sharing your test results, although I had trouble explaining the 
results of the first two tests, and maybe this is related to how the $MVC macro 
does its thing.

Anyway, If you throw out the first two tests, the $MVC technique appears to be 
250-300% more efficient than the MVCL technique with lengths between 4K-64K. 
But with a length of 128K, $MVC efficiency drops down to only 60%.  My guess is 
that MVCL will eventually prove to be more efficient than $MVC with move 
lengths in excess of 256K.

I don't know if moving to/from the same storage locations makes any difference 
for this test, but assuming intentional for the purpose of controlling this as 
a variable.  There's already enough unknowns!

Again, thanks for sharing!

Reply via email to