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!