On Sat, Mar 19, 2011 at 06:13:28PM -0400, Paul Smith wrote: > On Sat, 2011-03-19 at 20:47 +0300, Kirill Smelkov wrote: > > > 1000 2000 4000 5000 6000 7000 > > > > 3.82.90 (with patch, 2.2s 4.8s 14.0s 23.5s 31.6s 44.4s > > -O3, no asserts) > > 3.81 -O3 2.5s 5.2s 11.5s 14.1s 18.3s 23.8s > > I suspect it's to do with all the extra stuff added into the strcache; > as I mentioned before, it turns out that every temporary filename we > construct for pattern rule searches goes into the strcache even if they > don't match anything: that's a lot of extra memory.
Yes, I've seen in top for e.g. 7000 case that 3.81 max VIRT was ~ 22MB and 3.82.90 was ~ 73MB. > I wonder, if you run make (both old and new) with the "-r" flag, if > you'll see similar divergence in performance. No, for "-r" the situation is exactly the opposite - 3.82.90 wins here: 1000 2000 4000 5000 6000 7000 8000 3.82.90 -r 0.07s 0.18s 0.63s 1.00s 1.38s 1.82s 2.38s 3.81 -r 0.06s 0.15s 0.58s 1.01s 2.12s 2.33s 4.21s Also, I've made an observation: when run without "-r", both makes print <N> make: Nothing to be done for `all'. and 3.81 finishes right after that print, but 3.82.90 does something after it for significant amount of time and only after it finishes. I've tried to measure (without clock, just counting in my head) what that additional delay is and it looks like this: 1000 2000 4000 5000 6000 7000 3.81 -O3 2.5s 5.2s 11.5s 14.1s 18.3s 23.8s 3.82.90 (with patch, 2.2s 4.8s 14.0s 23.5s 31.6s 44.4s -O3, no asserts) 3.82.90 (delay after "Nothing to be done for `all') ~4s ~9s ~13s ~17s So the simple math suggests that in no "-r" case, 3.82.90 looses becase of that extra after-processing. Is it maybe that we are just freeing something for so long? Another note: after final printout, 3.82.90 VIRT stays stable for all that extra time until make finished. Thanks, Kirill _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make