With all the perl scalars now indirecting through PMCs, Ponie's performance
has dropped. Not surprising, in the general case, but the performance of
lib/locale.t is vile, and I'm wondering if that regression test hits
something pathological. It slows to a crawl after subtest 99 (line 240 in
http://public.activestate.com/cgi-bin/perlbrowse?file=lib%2Flocale.t&rev=
search for the text Find locales
)

I built ponie with profiling, and I find that it's spending an inordinate
amount of time in trace_children (half a second per call):

Flat profile:

Each sample counts as 0.000999001 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 29.55    379.89   379.89     2381   159.55   503.64  trace_children
 26.06    714.95   335.06 1337922049     0.00     0.00  pobject_lives
 12.95    881.48   166.52 1337414896     0.00     0.00  mark_special
  9.90   1008.71   127.23    16667     7.63    49.16  mark_hash
  5.69   1081.83    73.12 1939938960     0.00     0.00  lookupBucket
  4.81   1143.73    61.90 1939938960     0.00     0.00  lookupBucketIndex
  4.52   1201.88    58.15 3433969095     0.00     0.00  getBucket
  4.41   1258.55    56.68    21429     2.64     2.65  free_unused_pobjects
  0.27   1262.02     3.47 18878877     0.00     0.00  find_bucket
  0.12   1263.60     1.57 14149041     0.00     0.00  hash_get_bucket
  0.10   1264.92     1.33 166406567     0.00     0.00  Parrot_PMC_get_pointer
  0.07   1265.87     0.95    19048     0.05     0.05  used_cow
  0.07   1266.73     0.86  9459863     0.00     0.13  get_free_object_df
  0.06   1267.56     0.83    19048     0.04     0.04  clear_cow
  0.05   1268.18     0.62 124063316     0.00     0.00  int_compare
  0.05   1268.76     0.58   816271     0.00     0.00  Perl_pregcomp
  0.04   1269.22     0.47  4729750     0.00     0.00  pmc_type
  0.03   1269.65     0.43  4736686     0.00     0.27  Perl_sv_upgrade
  0.03   1270.07     0.42  1816485     0.00     0.00  Perl_regexec_flags
  0.03   1270.48     0.41 48661537     0.00     0.00  Perl_macro_SvPVX
  0.03   1270.87     0.38  1632298     0.00     0.00  Perl_pp_regcomp
  0.03   1271.23     0.37  1808077     0.00     0.00  Perl_pp_match


Any suggestions on what stats to gather to try to work out where things are
going wrong?

Nicholas Clark

Reply via email to