This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: mem-ssa merge 3/3


> Benjamin Kosnik wrote on 12/12/06 05:29:
> 
> >Hey Diego. Now that the big part of your patch is in, I am seeing a
> >10-15% compile speed benefit.
> >
> Glad to hear that.  One thing I would like to watch out for is 
> performance of generated code.  The memory partitioning scheme may 
> change the use-def and def-def chains we place between memory references.
> 
> So, it is possible that we may be making different optimization 
> decisions (though according to Nullstone and SPEC2000, that should 
> remain unchanged).

Hi,
I can only add that the memory savings reported by memory testers are
nice too.  There is regression of 8% for PR28071, but 30% savings for
combine.c are very cool ;)

Honza


comparing combine.c compilation at -O0 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 9267k to 9285k, overall 0.19%
  Peak amount of GGC memory still allocated after garbage collectin increased from 8784k to 8800k, overall 0.18%
  Amount of produced GGC garbage increased from 37441k to 37513k, overall 0.19%
    Overall memory needed: 28397k -> 28429k
    Peak memory use before GGC: 9267k -> 9285k
    Peak memory use after GGC: 8784k -> 8800k
    Maximum of released memory in single GGC run: 2643k
    Garbage: 37441k -> 37513k
    Leak: 6450k -> 6447k
    Overhead: 4862k -> 4666k
    GGC runs: 280

comparing combine.c compilation at -O0 -g level:
  Peak amount of GGC memory allocated before garbage collecting increased from 10795k to 10811k, overall 0.15%
  Peak amount of GGC memory still allocated after garbage collectin increased from 10425k to 10440k, overall 0.14%
  Amount of produced GGC garbage increased from 38023k to 38085k, overall 0.16%
    Overall memory needed: 30477k -> 30513k
    Peak memory use before GGC: 10795k -> 10811k
    Peak memory use after GGC: 10425k -> 10440k
    Maximum of released memory in single GGC run: 2360k
    Garbage: 38023k -> 38085k
    Leak: 9260k -> 9257k
    Overhead: 5530k -> 5333k
    GGC runs: 272

comparing combine.c compilation at -O1 level:
  Ovarall memory allocated via mmap and sbrk decreased from 39825k to 29470k, overall -35.14%
  Peak amount of GGC memory allocated before garbage collecting increased from 16870k to 16958k, overall 0.52%
  Peak amount of GGC memory still allocated after garbage collectin increased from 16702k to 16787k, overall 0.51%
  Amount of produced GGC garbage decreased from 58326k to 55524k, overall -5.05%
    Overall memory needed: 39825k -> 29470k
    Peak memory use before GGC: 16870k -> 16958k
    Peak memory use after GGC: 16702k -> 16787k
    Maximum of released memory in single GGC run: 2259k -> 2255k
    Garbage: 58326k -> 55524k
    Leak: 6473k -> 6479k
    Overhead: 6290k -> 9642k
    GGC runs: 358 -> 363

comparing combine.c compilation at -O2 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 16872k to 16956k, overall 0.50%
  Peak amount of GGC memory still allocated after garbage collectin increased from 16702k to 16787k, overall 0.51%
  Amount of produced GGC garbage decreased from 79634k to 71476k, overall -11.41%
  Amount of memory still referenced at the end of compilation increased from 6598k to 6610k, overall 0.19%
    Overall memory needed: 29386k -> 29470k
    Peak memory use before GGC: 16872k -> 16956k
    Peak memory use after GGC: 16702k -> 16787k
    Maximum of released memory in single GGC run: 4308k -> 2647k
    Garbage: 79634k -> 71476k
    Leak: 6598k -> 6610k
    Overhead: 8621k -> 11468k
    GGC runs: 416 -> 417

comparing combine.c compilation at -O3 level:
  Peak amount of GGC memory allocated before garbage collecting run decreased from 18754k to 18182k, overall -3.15%
  Amount of produced GGC garbage decreased from 116549k to 105939k, overall -10.02%
  Amount of memory still referenced at the end of compilation increased from 6668k to 6682k, overall 0.22%
    Overall memory needed: 29510k -> 29598k
    Peak memory use before GGC: 18754k -> 18182k
    Peak memory use after GGC: 17982k -> 17676k
    Maximum of released memory in single GGC run: 6490k -> 4116k
    Garbage: 116549k -> 105939k
    Leak: 6668k -> 6682k
    Overhead: 13281k -> 16395k
    GGC runs: 466 -> 471

comparing insn-attrtab.c compilation at -O0 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 70078k to 71190k, overall 1.59%
  Peak amount of GGC memory still allocated after garbage collectin increased from 43585k to 44696k, overall 2.55%
  Amount of produced GGC garbage increased from 131129k to 131968k, overall 0.64%
  Amount of memory still referenced at the end of compilation increased from 9289k to 9513k, overall 2.41%
    Overall memory needed: 88530k -> 89646k
    Peak memory use before GGC: 70078k -> 71190k
    Peak memory use after GGC: 43585k -> 44696k
    Maximum of released memory in single GGC run: 37868k
    Garbage: 131129k -> 131968k
    Leak: 9289k -> 9513k
    Overhead: 16940k -> 15975k
    GGC runs: 216 -> 211

comparing insn-attrtab.c compilation at -O0 -g level:
  Peak amount of GGC memory allocated before garbage collecting increased from 71228k to 72339k, overall 1.56%
  Peak amount of GGC memory still allocated after garbage collectin increased from 44840k to 45952k, overall 2.48%
  Amount of produced GGC garbage increased from 132027k to 133122k, overall 0.83%
    Overall memory needed: 89714k -> 90830k
    Peak memory use before GGC: 71228k -> 72339k
    Peak memory use after GGC: 44840k -> 45952k
    Maximum of released memory in single GGC run: 37869k -> 37868k
    Garbage: 132027k -> 133122k
    Leak: 11184k -> 11184k
    Overhead: 17318k -> 16354k
    GGC runs: 213 -> 209

comparing insn-attrtab.c compilation at -O1 level:
  Ovarall memory allocated via mmap and sbrk decreased from 110266k to 94330k, overall -16.89%
  Peak amount of GGC memory allocated before garbage collecting run decreased from 85470k to 72446k, overall -17.98%
  Peak amount of GGC memory still allocated after garbage collecting decreased from 79437k to 70077k, overall -13.36%
  Amount of produced GGC garbage decreased from 271413k to 229261k, overall -18.39%
    Overall memory needed: 110266k -> 94330k
    Peak memory use before GGC: 85470k -> 72446k
    Peak memory use after GGC: 79437k -> 70077k
    Maximum of released memory in single GGC run: 31672k -> 31671k
    Garbage: 271413k -> 229261k
    Leak: 9336k -> 9340k
    Overhead: 28721k -> 28172k
    GGC runs: 223 -> 224

comparing insn-attrtab.c compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 117834k to 123310k, overall 4.65%
  Peak amount of GGC memory allocated before garbage collecting run decreased from 87632k to 78010k, overall -12.33%
  Peak amount of GGC memory still allocated after garbage collecting decreased from 80352k to 75480k, overall -6.45%
  Amount of produced GGC garbage decreased from 310281k to 282035k, overall -10.01%
    Overall memory needed: 117834k -> 123310k
    Peak memory use before GGC: 87632k -> 78010k
    Peak memory use after GGC: 80352k -> 75480k
    Maximum of released memory in single GGC run: 30216k -> 30215k
    Garbage: 310281k -> 282035k
    Leak: 9339k -> 9343k
    Overhead: 35201k -> 34348k
    GGC runs: 246 -> 248

comparing insn-attrtab.c compilation at -O3 level:
  Ovarall memory allocated via mmap and sbrk decreased from 132294k to 113698k, overall -16.36%
  Peak amount of GGC memory allocated before garbage collecting run decreased from 87658k to 78036k, overall -12.33%
  Peak amount of GGC memory still allocated after garbage collecting decreased from 80377k to 75505k, overall -6.45%
  Amount of produced GGC garbage decreased from 311122k to 282863k, overall -9.99%
    Overall memory needed: 132294k -> 113698k
    Peak memory use before GGC: 87658k -> 78036k
    Peak memory use after GGC: 80377k -> 75505k
    Maximum of released memory in single GGC run: 30409k
    Garbage: 311122k -> 282863k
    Leak: 9342k -> 9348k
    Overhead: 35427k -> 34576k
    GGC runs: 250 -> 252

comparing Gerald's testcase PR8361 compilation at -O0 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 91699k to 92191k, overall 0.54%
  Peak amount of GGC memory still allocated after garbage collectin increased from 90791k to 91269k, overall 0.53%
  Amount of produced GGC garbage increased from 209462k to 209930k, overall 0.22%
  Amount of memory still referenced at the end of compilation increased from 47751k to 48078k, overall 0.68%
    Overall memory needed: 118582k -> 119062k
    Peak memory use before GGC: 91699k -> 92191k
    Peak memory use after GGC: 90791k -> 91269k
    Maximum of released memory in single GGC run: 19168k -> 19185k
    Garbage: 209462k -> 209930k
    Leak: 47751k -> 48078k
    Overhead: 20904k -> 20539k
    GGC runs: 413 -> 412

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
  Amount of produced GGC garbage increased from 216047k to 216527k, overall 0.22%
  Amount of memory still referenced at the end of compilation increased from 70710k to 70950k, overall 0.34%
    Overall memory needed: 131790k -> 131642k
    Peak memory use before GGC: 104519k -> 104385k
    Peak memory use after GGC: 103480k -> 103349k
    Maximum of released memory in single GGC run: 19647k -> 18862k
    Garbage: 216047k -> 216527k
    Leak: 70710k -> 70950k
    Overhead: 26521k -> 26156k
    GGC runs: 385 -> 384

comparing Gerald's testcase PR8361 compilation at -O1 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 96182k to 96659k, overall 0.50%
  Peak amount of GGC memory still allocated after garbage collectin increased from 93928k to 94406k, overall 0.51%
  Amount of memory still referenced at the end of compilation increased from 49435k to 50143k, overall 1.43%
    Overall memory needed: 119578k -> 120098k
    Peak memory use before GGC: 96182k -> 96659k
    Peak memory use after GGC: 93928k -> 94406k
    Maximum of released memory in single GGC run: 17997k -> 18009k
    Garbage: 447346k -> 439924k
    Leak: 49435k -> 50143k
    Overhead: 32335k -> 101046k
    GGC runs: 565

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 96209k to 96686k, overall 0.50%
  Peak amount of GGC memory still allocated after garbage collectin increased from 93956k to 94433k, overall 0.51%
  Amount of produced GGC garbage decreased from 565496k to 494683k, overall -14.31%
  Amount of memory still referenced at the end of compilation increased from 50350k to 51112k, overall 1.51%
    Overall memory needed: 119602k -> 120142k
    Peak memory use before GGC: 96209k -> 96686k
    Peak memory use after GGC: 93956k -> 94433k
    Maximum of released memory in single GGC run: 17997k -> 18009k
    Garbage: 565496k -> 494683k
    Leak: 50350k -> 51112k
    Overhead: 42152k -> 55999k
    GGC runs: 626 -> 619

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 97180k to 97680k, overall 0.51%
  Peak amount of GGC memory still allocated after garbage collectin increased from 95588k to 96087k, overall 0.52%
  Amount of produced GGC garbage decreased from 587055k to 514724k, overall -14.05%
  Amount of memory still referenced at the end of compilation increased from 50305k to 51087k, overall 1.55%
    Overall memory needed: 121418k -> 121938k
    Peak memory use before GGC: 97180k -> 97680k
    Peak memory use after GGC: 95588k -> 96087k
    Maximum of released memory in single GGC run: 18403k
    Garbage: 587055k -> 514724k
    Leak: 50305k -> 51087k
    Overhead: 42978k -> 55482k
    GGC runs: 635 -> 626

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 137618k -> 137638k
    Peak memory use before GGC: 81563k -> 81585k
    Peak memory use after GGC: 58443k -> 58465k
    Maximum of released memory in single GGC run: 45145k -> 45166k
    Garbage: 148485k -> 148443k
    Leak: 7540k -> 7539k
    Overhead: 25305k -> 25101k
    GGC runs: 82

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 137990k -> 138182k
    Peak memory use before GGC: 82197k -> 82218k
    Peak memory use after GGC: 59077k -> 59098k
    Maximum of released memory in single GGC run: 45210k -> 45232k
    Garbage: 148688k -> 148662k
    Leak: 9247k -> 9247k
    Overhead: 25770k -> 25566k
    GGC runs: 88

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 408354k to 423542k, overall 3.72%
  Peak amount of GGC memory allocated before garbage collecting increased from 194178k to 202462k, overall 4.27%
  Peak amount of GGC memory still allocated after garbage collectin increased from 187997k to 196531k, overall 4.54%
    Overall memory needed: 408354k -> 423542k
    Peak memory use before GGC: 194178k -> 202462k
    Peak memory use after GGC: 187997k -> 196531k
    Maximum of released memory in single GGC run: 94123k -> 94103k
    Garbage: 283657k -> 281969k
    Leak: 29776k -> 29776k
    Overhead: 29619k -> 29673k
    GGC runs: 98 -> 99

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 330166k to 353098k, overall 6.95%
  Peak amount of GGC memory allocated before garbage collecting increased from 194171k to 202459k, overall 4.27%
  Peak amount of GGC memory still allocated after garbage collectin increased from 187990k to 196528k, overall 4.54%
    Overall memory needed: 330166k -> 353098k
    Peak memory use before GGC: 194171k -> 202459k
    Peak memory use after GGC: 187990k -> 196528k
    Maximum of released memory in single GGC run: 96138k -> 96113k
    Garbage: 363897k -> 362205k
    Leak: 30359k -> 30359k
    Overhead: 45368k -> 45422k
    GGC runs: 105 -> 106

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
  Peak amount of GGC memory allocated before garbage collecting increased from 310802k to 321489k, overall 3.44%
  Peak amount of GGC memory still allocated after garbage collectin increased from 289146k to 299831k, overall 3.70%
    Overall memory needed: 778354k -> 769610k
    Peak memory use before GGC: 310802k -> 321489k
    Peak memory use after GGC: 289146k -> 299831k
    Maximum of released memory in single GGC run: 166516k -> 166488k
    Garbage: 501676k -> 498586k
    Leak: 45411k -> 45411k
    Overhead: 57008k -> 55694k
    GGC runs: 98

Head of the ChangeLog is:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]