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