|
Just for fun, I ran one more test case. In the third case the library named "JOHN" was loaded into a variable called &Library. The call was then made to "&Library/A". The results were almost identical to the qualified call. 20 seconds for 10,000 calls and 3:21 - 3:29 for 100,000 calls. For further clarification, all programs were owned by QUSER, and *PUBLIC had *USE authority to the programs. The test was run under user "JOHN". jte John Earl wrote: > Al, > > Please don't take this personally, but a certain amount of skepticism is > warranted for most of the folklore about performance on an AS/400. I >understand > what your > Instructor was trying to convey, and technically he may be correct, but > practically I just don't believe that there are any performance problems with > qualified program calls. Further, I have a hard time believing that even if > there were a difference, it would be large enough to matter. I guess the only > way to tell for sure is to run a test.... > > <Several hours later> > OK, I'm done. > > I just ran a test on one of our /400's that would seem to indicates that your > instructor's information is incorrect, outdated, or irrelevant. The tests > indicate that > an unqualified call appears to take a little longer than a qualified call. >See > below for the test results. > > MacWheel99@aol.com wrote: > > > > From: DBale@lear.com (Bale, Dan) > > > > > > Wow. Is this documented, Al? > > > > Referring to my remarks about qualifying vs. library list > > > > John Earl also challenged what I thought I had learned in IBM school. > > > > I could not find explicit clarification in any of my manuals, so I e-mailed > > question to IBM school asking what I had absorbed incorrectly on this topic >& > > here is the reply from one of my IBM professors: > > > > QUOTE > > > > Al, > > > > When access is requested to an object and *LIBL is specified for the object > > the library list information is used to check authority for the LIBRARY. If >a > > qualified name is specified, the authority for the LIBRARY is specifically > > checked, even if the library is included in the user's library list. > > > > *LIBL has the system establishing LIBRARY authorities for the libs in the > > list. > > Subsequent LIBRARY authority lookups are not going to be done UNLESS > > the lib_name/obj_name qualification is used. The system will lookup the > > authority the user has to the library every time a qualified reference is > > used. > > > > That's just for the library. The system then has to handle the security > > for the object itself. Hope that helps. > > > > Eric J. Jackson > > Sr. Education Specialist - AS/400 > > IBM Learning Services > > 330 N. Wabash, 4th floor > > Chicago, IL 60611 > > > > UNQUOTE > > > > My primary interest is in correcting any misconceptions that I had had. > > My conclusion from this is that my prior statement was a simplification, but > > that overall it is true that there is more security checking by >qualification > > than by library list. One thing that is not clear to me is in the case of a > > library with thousands of program objects ... including that in library list > > might result in excess checking, also hurting performance. > > > > ie. our folks sign onto BPCS & they do not get the BPCS logo >instantaneously, > > because their library list is being heavily loaded with access to approx 20% > > of the stuff in 12 Gig. That lag does not bother me yet. > > > > Al Macintyre ©¿© > > http://www.cen-elec.com MIS Manager Programmer & Computer Janitor > > +--- > > | This is the Midrange System Mailing List! > > | To submit a new message, send your mail to MIDRANGE-L@midrange.com. > > | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. > > | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. > > | Questions should be directed to the list owner/operator: >david@midrange.com > > +--- > > For this test I created a program called "A" and put it in library "JOHN". > Program "A" has a single statement: > C EVAL *INLR = *ON > > By ending the program with LR on after each call, I am causing a security >lookup > with each call to the program, rather than reusing an open version of the > program. > > Then I created two CL programs (TEST1 and TEST2) that call program "A" a >variable > number of times. The variable number is passed into the program using the > parameter "&Iter". Program "TEST1” did an unqualified call (CALL A), and >program > "TEST2" a qualified call ( CALL JOHN/A ). Here is the code for the > unqualified call: > > 0001.00 PGM &Iter > 0002.00 > 0003.00 DCL &Count *Dec ( 15 5 ) > 0004.00 DCL &EndMsg *Char 80 > 0005.00 DCL &Iter *Dec ( 15 5 ) > 0006.00 DCL &Iter_Char *Char 15 > 0007.00 DCL &StartMsg *Char 80 > 0008.00 > 0009.00 CHGVAR &Iter_Char &Iter > 0010.00 CHGVAR &EndMsg ('End call of 1 unqualified program' *BCAT + > 0011.00 &Iter_Char *BCAT 'times') > 0012.00 CHGVAR &StartMsg ('Begin call of 1 unqualified program' *BCAT + > 0013.00 &Iter_Char *BCAT 'times') > 0014.00 SNDJRNE JRN( QAUDJRN ) TYPE( 'PT' ) ENTDTA( &StartMsg ) > 0015.00 > 0016.00 LOOP: > 0017.00 CHGVAR &Count ( &Count + 1 ) > 0018.00 CALL A > 0019.00 IF ( &Count *NE &Iter ) THEN( GOTO CMDLBL( LOOP )) > 0020.00 > 0021.00 SNDJRNE JRN( QAUDJRN ) TYPE( 'PT' ) ENTDTA( &EndMsg ) > 0022.00 > 0023.00 SNDMSG MSG( &EndMsg ) TOUSR(JOHN) > 0024.00 ENDPGM > > The difference between "TEST1" and "TEST2" was that line 18 of "TEST2" looked > like this: > 0018.00 CALL JOHN/A > > and the journal entry messages were changed. Here is "TEST2": > > 0001.00 PGM &Iter > 0002.00 > 0003.00 DCL &Count *Dec ( 15 5 ) > 0004.00 DCL &EndMsg *Char 80 > 0005.00 DCL &Iter *Dec ( 15 5 ) > 0006.00 DCL &Iter_Char *Char 15 > 0007.00 DCL &StartMsg *Char 80 > 0008.00 > 0009.00 CHGVAR &Iter_Char &Iter > 0010.00 CHGVAR &EndMsg ('End call of 1 qualified program' *BCAT + > 0011.00 &Iter_Char *BCAT 'times') > 0012.00 CHGVAR &StartMsg ('Begin call of 1 qualified program' *BCAT + > 0013.00 &Iter_Char *BCAT 'times') > 0014.00 SNDJRNE JRN( QAUDJRN ) TYPE( 'PT' ) ENTDTA( &StartMsg ) > 0015.00 > 0016.00 LOOP: > 0017.00 CHGVAR &Count ( &Count + 1 ) > 0018.00 CALL JOHN/A > 0019.00 IF ( &Count *NE &Iter ) THEN( GOTO CMDLBL( LOOP )) > 0020.00 > 0021.00 SNDJRNE JRN( QAUDJRN ) TYPE( 'PT' ) ENTDTA( &EndMsg ) > 0022.00 > 0023.00 SNDMSG MSG( &EndMsg ) TOUSR(JOHN) > 0024.00 ENDPGM > > The Library list for the job was as follows: > > LIBMSYS SYS PowerTech IBM System Library > LUSRSYS SYS PowerTech User System Library > QSYS SYS System Library > QSYS2 SYS System Library for CPI's > QHLPSYS SYS > QUSRSYS SYS > POWERLOCK PRD PowerLock Network Security Product Library > QGPL USR > QTEMP USR > JOHN USR Programmer library for John Earl > > The tests were run under User Profile "JOHN" who has no special authorities. > "JOHN" is a member of group "PROG" which has *JOBCTL and *SAVSYS > special authorities. > > I ran three sets of tests. For each set I called programs TEST1 and TEST2 > twice. The first time I passed a value of 10,000 to the programs and the >second > time I > passed a value of 100,000 to the programs. Using the SNDJRNE commands >allowed me > to log the start and end time of these loops. The tests were run on a > model 170 with 128MB of Memory and 8GB of disk. OS version is V4R3. There >were > no other active jobs other than my workstation during the tests, and I >refrained > from hitting any keys until the completion message appeared on my screen. The > results were as follows: > > First Test Second > Test Third Test > UnQual Qualified UnQual Qualified > UnQual Qualified > 100000 14:09:29 14:05:42 22:23:59 22:38:04 23:20:43 > 23:33:29 > Calls 14:13:30 14:09:08 22:27:51 22:41:27 23:24:54 > 23:36:52 > Difference 0:04:01 0:03:26 0:03:52 0:03:23 > 0:04:11 0:03:23 > > 10000 13:52:12 14:03:39 22:46:46 22:46:22 23:17:41 > 23:18:08 > Calls 13:52:36 14:04:00 22:47:09 22:46:42 23:18:05 > 23:18:28 > Difference 0:00:24 0:00:21 0:00:23 0:00:20 > 0:00:24 0:00:20 > > These tests indicate that their is slightly _better_ performance with a >qualified > call than with an unqualified call. So while the technical description that >your > instructor gave you may still be true, the actual effect on performance is the > opposite of his predictions. > > But even if the results were reversed, one has to ask how important >performance > is in this circumstance? If 10,000 calls runs 3 - 4 seconds longer and >100,000 > calls run anyhere from 29 - 48 seconds longer how many applications will >really > be slowed down by choosing one way over the other? If you've got an >interactive > app > that refers to 3 or even 10 unqualified objects, will anyone notice that you > didn't qualify them? If you have a batch job that refers to 250,000 >unqualified > objects > and it runs 2 minutes longer, who will know? > > A good summary would be that this performance "issue", like many of the other > performance legends that we carry forward from the days when machines were > slow, only serves to distract us from the real task at hand (building sound > applications). A secondary point is that whenever someone claims that one > method > performs better or worse than another, it ought to be really easy to test the > claim on our own. > > All of this is of course, JMHO, and you're welcome to repeat the test on your >own > machine and tell us whether you get corroborating results. > > jte > (Convalescing, with obviously too much time on his hands :) > > -- > John Earl johnearl@400security.com > The PowerTech Group 206-575-0711 > PowerLock Network Security www.400security.com > -- > > +--- > | This is the Midrange System Mailing List! > | To submit a new message, send your mail to MIDRANGE-L@midrange.com. > | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. > | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. > | Questions should be directed to the list owner/operator: david@midrange.com > +--- -- John Earl johnearl@400security.com The PowerTech Group 206-575-0711 PowerLock Network Security www.400security.com -- +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.