bugmake - Bugs: bug #16140, make 3.81rc2: performance decrease...

 
 

bug #16140: make 3.81rc2: performance decrease when searching builtin implicit rules compared to 3.80

Submitted by:  None
Submitted on:  Tue 21 Mar 2006 02:33:03 PM UTC  
 
Severity: 3 - NormalItem Group: Enhancement
Status: FixedPrivacy: Public
Assigned to: Boris Kolpackov <bosk>Open/Closed: Closed
Component Version: 4.0Operating System: Any
Fixed Release: 3.81Triage Status: None

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Wed 22 Mar 2006 01:20:01 PM UTC, comment #3:

The fix is in CVS. I tested it on some build systems that don't use second expansion. Time for CVS was about 25% higher compared to 3.80 (with -r both showed the same time). With the fix the times are the same for both versions, with and without -r.

Boris Kolpackov <bosk>
Project MemberIn charge of this item.
Tue 21 Mar 2006 08:51:24 PM UTC, comment #2:

If it's a simple-enough change and doesn't cause problems with the regression tests it's fine with me to fix it. Do you have access to valgrind and/or gprof to check the performance etc.?

Paul D. Smith <psmith>
Project Administrator
Tue 21 Mar 2006 08:40:00 PM UTC, comment #1:

I took a quick look and it appears that we call set_file_variables even if none of the dependencies require it. I think we should call set_file_variables only after we see the first dependency that requires second expansion. Paul, is it ok with you if I fix this for 3.81?

Boris Kolpackov <bosk>
Project MemberIn charge of this item.
Tue 21 Mar 2006 02:33:03 PM UTC, original submission:

make 3.81rc2 shows a performance decrease of a factor 3 (at least in my case) compared to make 3.80 in the "everything up to date" case. This can be narrowed to the part searching the builtin implicit rules. Running 'make -r' (because the builtins are not necessary in my case) produces identical times for 3.80 and 3.81rc2.

A significant amount of time is spent in set_file_variables() inside pattern_search() which has not been called in 3.80 before. OTOH, less time is spent in file_impossible_p() and file_exists_p() (see attached gprof reports).

Anonymous

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

Attached Files
file #1477:  gprof-reports.tar.gz added by None (21KiB - application/x-gzip - gprof reports for make 3.80 and 3.81rc2)

 

Depends on the following items: None found

Items that depend on this one: None found

 

CC list is empty

 

Do you think this task is very important?
If so, you can click here to add your encouragement to it.
This task has 0 encouragements so far.

Only logged-in users can vote.

 

Please enter the title of George Orwell's famous dystopian book (it's a date):

 

 

Follow 6 latest changes.

Date Changed By Updated Field Previous Value => Replaced By
Sat 01 Apr 2006 07:20:57 AM UTCpsmithFixed Release4.0=>3.81
Wed 22 Mar 2006 01:20:01 PM UTCboskStatusNone=>Fixed
  Open/ClosedOpen=>Closed
  Fixed ReleaseNone=>4.0
Tue 21 Mar 2006 08:40:00 PM UTCboskAssigned toNone=>bosk
Tue 21 Mar 2006 02:33:03 PM UTCNoneAttached File-=>Added gprof-reports.tar.gz, #3511

Back to the top


Powered by Savane 3.1-cleanup1