Re: [Rd] Varying as.Date performance

From: Peter Dalgaard <p.dalgaard_at_biostat.ku.dk>
Date: Thu 05 May 2005 - 14:28:49 GMT

Jeff Enos <jeff@kanecap.com> 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.

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)             FAX: (+45) 35327907

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Fri May 06 00:50:53 2005

This archive was generated by hypermail 2.1.8 : Mon 20 Feb 2006 - 03:21:05 GMT