On Mon Feb 03 19:02:17 2014, tonyc wrote: > > This made a significant difference, I did 3 runs for a baseline, with > build durations of 718, 735 and 727 seconds[1]. > > I added -DPERL_DISABLE_PMC to the $(MINICORE_OBJ) build command and > did another three runs with durations of 643, 698 and 675 seconds. > > Taking the median of each that's a 7% reduction in build time. > > Tony > > [1] this was on my normal desktop, which didn't have a lot of CPU > usage, but I guess there was a lot of noise anyway. Since this ticket is heading down different directions. I'll point the following 3 ideas in this ticket so far. 1. disabling pmc in miniperl can be done for all OSes, there is also the PERL_IS_MINIPERL macro, so no need to -D it 2. ${^WIN32_SLOPPY_STAT} for Win32 miniperl only 3. /lib first on Win32 miniperl only The reason I/O is slow on the machine I used is probably a combination of 2 things. A horrible HP RAID controller I've never figured out why its slow. Sequential read speed averages 49 MBps. Random access time 8 ms. But its full of 15K SCSIs. And I'm using WOW64 (32 bit Windows process on 64 bit OS, C stack params and passed struct *s are copied and extended/truncated WOW64 before the 64 bit syscall, it will add a lil overhead probably). My time improvements in abs time saved (minutes) will be the largest of any porter because of these 2 negative factors. Random thoughts on the code, both S_check_type_and_open and S_doopen_pm do SvPV on their SV.In 1 place in pp_require (doopen_pm's caller), SvPVX is done just before doopen_pm. Multiple magic gets issue. I know with no .pmc, 1 sub replaces the other. The whole sv_newmortal and SvSetSV_nosteal is confusing. Why not just cat onto incoming SV the "c", then SvCUR it off? "if (PerlLIO_stat(SvPV_nolen_const(pmcsv)" that can become SvPVX since sv_catpvn guarentees a PV. In .pmc mode, if there is a .pmc, 2 stats are done on it. ------------------------- if (!IS_SAFE_PATHNAME(p, len, "require")) return NULL; ------------------------- This is done twice on every path between the 2 funcs. I'm not touching the mess that is called pp_require. -- bulk88 ~ bulk88 at hotmail.com --- via perlbug: queue: perl5 status: open https://rt.perl.org/Ticket/Display.html?id=121119Thread Previous | Thread Next