> -----Original Message-----
> From: Greg Matheson [mailto:[EMAIL PROTECTED]
> Sent: Monday, May 02, 2005 5:47 PM
> To: perl-unicode@perl.org
> Subject: Re: utf8::SWASHNEW
> 
> On Mon, 02 May 2005, Christopher Fry wrote:
> 
> > One of the things we gathered from our profiling was that more of the
> SWASH*
> > activity in our apps was happening around regexes. We took a closer look
> > and, for the regexes that could never have unicode values (e.g. for
> internal
> > URL checking), we just scoped them and did a "use bytes" within that
> scope.
> > It helped, but not to the degree that we thought it would.
> 
> > Turns out the act of profiling the code actually exacerbated the
> frequency
> > of these SWASH* functions. Instrumenting suspect functions outside of
> > profiling demonstrated that.
> 
> How did you show that? Would running code in the debugger also have an
> effect? Here is the profile for Kwiki's index.cgi below.
> 30 percent of the time is in utf8::SWASHNEW.

We turned off the profiler and ran the same code test path but with some
print STDERR stuck in the actual SWASH function. Then we compared the counts
of those prints vs what the profiler was telling us and saw a difference of
2-3 orders of magnitude.

> 
> > > -----Original Message-----
> > > From: Rafael Garcia-Suarez [mailto:[EMAIL PROTECTED]
> > > Sent: Friday, April 29, 2005 8:58 AM
> > > To: perl-unicode@perl.org
> > > Subject: Re: utf8::SWASHNEW
> 
> > > Eric Cholet wrote in perl.unicode :
> > > > I just did a profiling on one of my programs, and it turns out it
> > > > spends most of its time in utf8::SWASHNEW. In second place is one of
> my
> > > > own functions, and in third place comes utf8::SWASHGET. What do
> > > > SWASHNEW and SWASHGET do ? (in layman's terms-- I browsed the source
> > > > but it gave me a headache). Is this a price to pay when using Perl
> > > > unicode strings?
> 
> > > They're used to load and initialise the swatchs, ie. internal hashes
> > > that contain unicode properties (sets of unicode chars, e.g.
> > > alphabetics, etc).
> 
> > > So, they're typically called rarely. Can you post an example of code
> > > that reproduces the problem ?
> 
> Here's no code, but running Kwiki's index.cgi from the command
> line with perl -d:DProf index.cgi, produces this profile:
> 
> %Time ExclSec CumulS #Calls sec/call Csec/c  Name
>  30.4   1.178  0.000     98   0.0120 0.0000  utf8::SWASHNEW
>  4.80   0.186  0.329    106   0.0018 0.0031  Spiffy::import
>  4.54   0.176  1.541   3103   0.0001 0.0005  Spiffy::__ANON__
>  3.72   0.144  1.517     19   0.0076 0.0798  Spoon::Hub::load_class
>  3.69   0.143  0.143   2743   0.0001 0.0001  overload::mycan
>  3.48   0.135  0.291    143   0.0009 0.0020  Spiffy::field
>  3.20   0.124  0.113    436   0.0003 0.0003  Spiffy::parse_arguments
>  3.10   0.120  0.168      8   0.0149 0.0210  Template::Config::load
>  3.07   0.119  0.332     10   0.0119 0.0332  Spoon::Base::BEGIN
>  2.94   0.114  0.303    236   0.0005 0.0013  Carp::caller_info
>  2.71   0.105  0.105   4374   0.0000 0.0000
> Filter::Util::Call::filter_read
>  2.32   0.090  0.090      8   0.0112 0.0112  CGI::_compile
>  2.04   0.079  0.174     10   0.0079 0.0174  Template::BEGIN
>  1.94   0.075  1.280    332   0.0002 0.0039
> Spoon::Formatter::Unit::match_phra
>                                              se
>  1.81   0.070  0.089      4   0.0175 0.0223  Spoon::Cookie::BEGIN
> 
> 30 percent of the time in utf8::SWASHNEW!
> 
> --
> Greg Matheson, Taiwan

Reply via email to