In the "foreach" loop, you are executing a separate API call for every 
field. It should be much faster to fetch the whole entry with one call:

   %entry = ars_GetEntry( $ctrl, $ARSschema, $entry_id, $x1,..,$xn );
   die "ars_GetEntry($ARSschema,$entry_id): $ars_errstr" if $ars_errstr;

   print datafile join("|", map {$entry{$_}} ($x1,..,$x)), "\n";

Using ars_GetListEntryWithFields (if you aren't fetching large char 
(over 255 character) or diary fields) or ars_GetMultipleEntries might 
improve the performance even a bit further.

By the way, instead of having n variables $x1,...,$xn for the field ids, 
a better solution would be to store them in an array:

my @names = ($var1,...,$varN);
my @fieldIds;
foreach my $name ( @names ){
     push @fieldIds, ars_GetFieldByName( $ctrl, $schema, $name );
}

and then call

   %entry = ars_GetEntry( $ctrl, $ARSschema, $entry_id, @fieldIds );


I'd also like to know some more details about what's going wrong with 
ars_GetFieldTable. Maybe this is a bug in ARSperl and your informations 
could help me to fix it.


Best regards,
Thilo



Paizo wrote:
> 
> Hi Listeners,
> 
> I have some performance problem executing a perl script working like below:
> 
> 
> 
> $var1 = "something1";
> ($x1 = ars_GetFieldByName($ctrl, $ARSschema, $var1)) || die "bla bla 
> bla.\n";
> 
> ...
> 
> $varn = "somethingn";
> ($xn = ars_GetFieldByName($ctrl, $ARSschema, $var1)) || die "bla bla 
> bla.\n";
> 
> #####i used ars_GetFieldByName because ars_GetFieldTable didn't work 
> always ( i don't know why )
> 
> #######then i load the qualifier:
> 
> ($qual = ars_LoadQualifier($ctrl, $ARSschema, $str_qual)) ||
>     die "ars_LoadQualifier: $ars_errstr";
> 
> ...
> 
> ####i retrieve the results ( don't take too much time ):
> 
> (%entries = ars_GetListEntry($ctrl, $ARSschema, $qual, 0, 0)) || die 
> "ars_GetListEntry: $ars_errstr";
> 
> #### then i cicle for save the data in a file ( that is the bottle neck ):
> 
> foreach $entry_id (sort keys %entries) {
> 
>     $something1 = ars_GetEntry($ctrl, $ARSschema, $entry_id,$x1);
>     ...
>     $somethingn = ars_GetEntry($ctrl, $ARSschema, $entry_id,$xn);
>    
>     print datafile "$something1|$something2|...|$somethingn\n";
> 
> }
> 
> 
> That's take up too 1 hour for finish while using the same qualification 
> with AR System User take less than 2 minuts....
> 
> How can i speed up that code?
> 
> Thanks,
> 
> Paizo
> 
> 
> -- 
> --------------------
> A me cugin na volta xe ndà dal geataro e el ga domandà na coppetta 
> trigusto co i gusti seegheta, sarexe e schie co na fettina de poenta.
> El geataro pena sentio cheà goduriosa scelta, el se ga messo subito el 
> pigiama de banane e el ghe ga messo in testa a corona de poegge medie e 
> lo ga fatto diventare Re dei Gelati Biricchini.
> -----------------------
> Confezione trigusto seegheta/sarexe/chie co pratico contenitore par e 
> fete de poenta, stile estatè o quea dea ciocoeata
> Altri gusti poe essere bigadini/kiwi/lasonil co socoi de vacca da 
> tociare o erbagatta/straciatella/calsina co coe de sorxe da tociare
> ------------
> Rileggendo a firma diria che se poe puntare al mercato dei ghiaccioli 
> col el gusto crema al diserbo e paraflù ricoperta da una soffice crosta 
> de pus co al posto del bacheto un termometro anale pratico pa misurarse 
> a freve dopo aver magnà el geato (chi xe che no lo fa al giorno 
> d'oggi?!?!). Garantite scorese bitonali e solfeggi anali.
> 
> 
> ------------------------------------------------------------------------
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems?  Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >>  http://get.splunk.com/
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Arsperl-users mailing list
> Arsperl-users@arsperl.org
> https://lists.sourceforge.net/lists/listinfo/arsperl-users


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Arsperl-users mailing list
Arsperl-users@arsperl.org
https://lists.sourceforge.net/lists/listinfo/arsperl-users

Reply via email to