|
-- -- [ Picked text/plain from multipart/alternative ] 13,000 is a great many records, especially if you displaying them on a screen. 9999 is the limit, so perhaps you would consider a third way? Could you divide your 13,000 records in some logical way so that you could build 3 to 8 identical subfiles with each subfile holding a fraction of your entire 13,000? If you did it this way you could copy your existing code and not have to rewrite for page-at-a-time. --------------------------------------------------------- Booth Martin http://www.MartinVT.com Booth@MartinVT.com --------------------------------------------------------- -------Original Message------- From: rpg400-l@midrange.com Date: Thursday, October 10, 2002 05:47:08 AM To: rpg400-l@midrange.com Subject: Load all subfile I have a requirment where iam using Loadall subfile...The no of records Iam having right now is around 9000(less than9999)...Now I have to add another 4thousands of records to this...I dont like to reprogram it by using single page subfile...How can i do this with Loadall subfile?Am I going to loose any records if i add 4 thousand records to the already existing 9000 records....I cant reprogram it....I ve to do with Load all only....Can u please help giving answer to this.... Best Regards Murali. On Thu, 10 Oct 2002 Scott Klement wrote : > >On Wed, 9 Oct 2002, Steve Richter wrote: > > > > Its just a hunch of mine. C relies on null term strings so I >am speculating > > that ILE handles them efficiently. > > > >Okay, I wrote & ran some benchmarks on these things. To my >surprise, both >fixed-length and null-terminated strings performed SIGNIFICANTLY >better >than varying. About twice as fast! I hope Hans or Barbara can >explain >why... > >This was done on my company's iSeries, 9406-270(2248) at V4R5. >I was the only person online / only job running. >I did not enable any special optimization for either compiler. >All the strings I passed were 32000 bytes long. > >Here's the results: > >Description Iters per Second >-------------------------------- ----------------- >ILE RPG fixed-len by value 4167 >ILE RPG fixed-len by reference 416667 >ILE RPG null-terminated by value 4167 >ILE RPG null-terminated by reference 416667 >ILE RPG varying by value 2083 >ILE RPG varying by reference 217391 >ILE C null-terminated by value 8333 >ILE C null-terminated by reference 1666666 > > >Here are the programs that I used to perform the test. Note >that I >assigned a 'x' to the first byte in each string in each function >just >to make sure the compiler didn't "remove" the routine during some >sort >of optimization. > > H DFTACTGRP(*NO) ACTGRP(*NEW) > > D by_value PR > D data 32000A value > D by_reference PR > D data 32000A > D v_by_value PR > D data 32000A value varying > D v_by_reference PR > D data 32000A varying > D n_by_value PR > D data 32000A value > D n_by_reference PR > D data 32000A > > D data S 32000A > D data2 S 32000A varying > D start S Z > D end S Z > D diff S 10I 0 > D msg S 50A > D x S 10I 0 > > c eval data = 'This is not a >null-terminated '+ > c 'string.' > c eval data2= 'This is not a >null-terminated '+ > c 'string.' > > c time start > > c for x = 1 to 50000 > c callp by_value(data) > c endfor > > c time end > > c end subdur start diff:*seconds > c eval msg = 'by-value ' + >%editc(diff:'Z') > c msg dsply > > c time start > > c for x = 1 to 5000000 > c callp by_reference(data) > c endfor > > c time end > > c end subdur start diff:*seconds > c eval msg = 'by-ref ' + >%editc(diff:'Z') > c msg dsply > > c time start > > c for x = 1 to 50000 > c callp v_by_value(data2) > c endfor > > c time end > > c end subdur start diff:*seconds > c eval msg = 'v-by-value ' + >%editc(diff:'Z') > c msg dsply > > c time start > > c for x = 1 to 5000000 > c callp v_by_reference(data2) > c endfor > > > c time end > > c end subdur start diff:*seconds > c eval msg = 'v-by-ref ' + >%editc(diff:'Z') > c dsply msg > > c eval data = 'This is now a >null-terminated '+ > c 'string.' + X'00' > > c time start > > c for x = 1 to 50000 > c callp n_by_value(data) > c endfor > > c time end > > c end subdur start diff:*seconds > c eval msg = 'n-by-value ' + >%editc(diff:'Z') > c msg dsply > > c time start > > c for x = 1 to 5000000 > c callp n_by_reference(data) > c endfor > > c time end > > c end subdur start diff:*seconds > c eval msg = 'n-by-ref ' + >%editc(diff:'Z') > c dsply msg > > c eval *inlr = *on > > P by_value B > D by_value PI > D data 32000A value > c eval %subst(data:1:1) = 'x' > P E > > > P by_reference B > D by_reference PI > D data 32000A > c eval %subst(data:1:1) = 'x' > P E > > > P v_by_value B > D v_by_value PI > D data 32000A value varying > c eval %subst(data:1:1) = 'x' > P E > > > P v_by_reference B > D v_by_reference PI > D data 32000A varying > c eval %subst(data:1:1) = 'x' > P E > > > P n_by_value B > D n_by_value PI > D data 32000A value > c eval %subst(data:1:1) = 'x' > P E > > > P n_by_reference B > D n_by_reference PI > D data 32000A > c eval %subst(data:1:1) = 'x' > P E > > > >#include <stdio.h> >#include <string.h> >#include <time.h> > >struct my_data { > char string[32000]; >}; > >void by_value(struct my_data d); >void by_reference(char *str); > >int main(void) { > struct my_data dta; > time_t start, end; > int x; > > strcpy(dta.string, "This is now a null-terminated >string."); > > time(&start); > > for (x=0; x<50000; x++) > by_value(dta); > > time(&end); > > printf("By-value total time %f seconds\n", >difftime(end,start)); > > time(&start); > > for (x=0; x<5000000; x++) > by_reference(dta.string); > > time(&end); > > printf("By-reference total time %f seconds\n", > difftime(end,start)); > > > return 0; >} > >void by_value(struct my_data d) { > d.string[0] = 'x'; >} > >void by_reference(char *str) { > str[0] = 'x'; >} > >_______________________________________________ >This is the RPG programming on the AS400 / iSeries (RPG400-L) >mailing list >To post a message email: RPG400-L@midrange.com >To subscribe, unsubscribe, or change list options, >visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l >or email: RPG400-L-request@midrange.com >Before posting, please take a moment to review the archives >at http://archive.midrange.com/rpg400-l. > __________________________________________________________ Give your Company an email address like ravi @ ravi-exports.com. Sign up for Rediffmail Pro today! Know more. http://www.rediffmailpro.com/signup/ _______________________________________________ This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@midrange.com To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l or email: RPG400-L-request@midrange.com Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l. . -- [ Content of type image/gif deleted ] --
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.