[Rd] Varying as.Date performance

Peter Dalgaard p.dalgaard at biostat.ku.dk
Thu May 5 16:28:49 CEST 2005


Jeff Enos <jeff at 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 at biostat.ku.dk)             FAX: (+45) 35327907



More information about the R-devel mailing list