Date: Tue, 8 Feb 2011 16:22:21 0500
ReplyTo: Chang Chung <chang_y_chung@HOTMAIL.COM>
Sender: "SAS(r) Discussion" <SASL@LISTSERV.UGA.EDU>
From: Chang Chung <chang_y_chung@HOTMAIL.COM>
Subject: Re: Strip Function And Leading and Trailing Tab Chars
On Tue, 8 Feb 2011 20:20:30 +0000, toby dunn <tobydunn@HOTMAIL.COM> wrote:
...
>I'll preface this with much depends on ones data if you are looking to eek
the last ounce of speed and/or efficiency.
>However, the two RegEx solution is by in large the best all around
solution.
...
hi, toby,
Thanks for the Friedl reference. I get that the alternation () kills the
prx optimization. But this matters only when the overhead of making the
prxchange() function call is negligible compared to the savings you get
from prx optimization. I am not so sure if this is the case. Below is my
test code. In terms of real time, I get wildly different results each time
I run it, despite of the sasfile'ing. But I noticed that the cpu time is
always about twice as longer for data step toby than chang.
Cheers,
Chang
%let seed=1234;
data one;
length s $200;
do i = 1 to 1e6;
do j = 1 to 200;
if ranuni(&seed) < 0.05 then substr(s,j,1) = " ";
end;
output;
end;
run;
sasfile work.one.data open;
data chang;
set one;
s2 = prxchange('s/^\s+\s+$//o', 1, s);
keep s s2;
run;
data toby;
set one;
s3 = prxchange('s/^\s+//o', 1, s);
s3 = prxchange('s/\s+$//o', 1, s3);
keep s s3;
run;
sasfile work.one.data close;
proc compare data=toby compare=chang(rename=(s2=s3));
run;
/* on log
NOTE: No unequal values were found. All values compared are exactly equal.
*/
