On Thu, 5 May 2005, Peter Dalgaard wrote:
Jeff Enos <[EMAIL PROTECTED]> writes:
Thanks for these suggestions. C-level profiling yields the following:
% cumulative self self total time seconds seconds calls s/call s/call name 36.01 5.34 5.34 100000 0.00 0.00 get_locale_strings 4.32 5.98 0.64 100000 0.00 0.00 mktime00 3.98 6.57 0.59 277462 0.00 0.00 Rf_eval 3.71 7.12 0.55 472935 0.00 0.00 Rf_findVarInFrame3 3.64 7.66 0.54 100000 0.00 0.00 strptime_internal 3.51 8.18 0.52 1 0.52 7.51 do_strptime
It looks like strftime is called from get_locale_strings, which might be the culprit. Any suggestions on where I might go from here?
You might try modifying get_locale_strings (and its wide counterpart) with a check for an unchanged locale. E.g.
static char *last_LC_TIME=NULL;
....
tmp = setlocale(LC_TIME, NULL) if (strcmp(tmp, last_LC_TIME)) return;
last_LC_TIME = tmp;
.... set the strings ....
if the call to setlocale is considerably faster than 40 calls to strftime(), you might have a winner.
Yes, I think that would be a worthwhile optimization. I didn't bother because I figured it would be fast enough (which at 50musec it almost always is).
However, get_locale_strings is only 36% of the total, and we have at least another 60% to account for. (81.01 vs 1.18 secs.)
-- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
______________________________________________ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel