Hi Wolfgang, On Wed, Nov 2, 2011 at 11:48 PM, Wolfgang Denk <w...@denx.de> wrote: > Dear Daniel Schwierzeck, > > In message > <cacuy__ujmnrykmwimb9pqr0_ds6cgiyo-msovy4esh2zt6z...@mail.gmail.com> you > wrote: >> >> On Wed, Nov 2, 2011 at 7:54 AM, Wolfgang Denk <w...@denx.de> wrote: >> > U-Boot Makefiles contain a number of tests for compiler features etc. >> > which so far are executed again and again. =C2=A0On some architectures >> > (especially ARM) this results in a large number of calls to gcc. >> > >> > This patch makes sure to run such tests only once, thus largely >> > reducing the number of "execve" system calls. >> > >> >> maybe you want to try this experimental patch. >> http://patchwork.ozlabs.org/patch/123313/ >> >> It significantly reduces the count of gcc calls by caching the results. >> This also improves compilation times. > > Do you suggest this in addition or instead of the patch I posted? > > Can you provide some measurements of build times and/or execve system > calls?
I ran some additonal tests with interesting results. Board: ARM, Tegra2, seaboard Toolchain: Sourcery G++ Lite 2011.03-41 for ARM GNU/Linux Workstation: Core 2 Duo E6600 @2,4 Ghz, 4 GB, x86_64 I patched the cc-option macro to count all calls like this: cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \ - > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) + > /dev/null 2>&1; then echo "$(1)"; echo "$1" >> $(OBJTREE)/cc-option; else echo "$(2)"; fi ;) I ran the steps below for following source trees: - unmodified HEAD - only your patch - only my patch - both patches combined Steps: Complete build: -> git clean -xdf -> CROSS_COMPILE=/opt/codesourcery/arm-2011.03/bin/arm-none-linux-gnueabi- make seaboard_config -> time CROSS_COMPILE=/opt/codesourcery/arm-2011.03/bin/arm-none-linux-gnueabi- CACHE_CC_OPTIONS=y make -s -> cat cc-option | wc -l Incremental rebuild: -> time CROSS_COMPILE=/opt/codesourcery/arm-2011.03/bin/arm-none-linux-gnueabi- CACHE_CC_OPTIONS=y make -s Complete build with strace: -> git clean -xdf -> CROSS_COMPILE=/opt/codesourcery/arm-2011.03/bin/arm-none-linux-gnueabi- make seaboard_config -> CROSS_COMPILE=/opt/codesourcery/arm-2011.03/bin/arm-none-linux-gnueabi- CACHE_CC_OPTIONS=y strace -f -e trace=execve -o strace.out make -s -> grep execve strace.out | wc -l Results: unmodified HEAD: real 1m11.540s user 2m7.170s sys 0m19.840s cc-option calls 3024 real 0m20.176s user 0m39.260s sys 0m6.480s execve calls 16502 only your patch: real 0m32.371s user 0m47.440s sys 0m7.900s cc-option calls 864 real 0m9.606s user 0m16.890s sys 0m2.940s execve calls 5906 only my patch: real 0m28.187s user 0m56.030s sys 0m7.820s cc-option calls 20 real 0m5.013s user 0m13.300s sys 0m2.200s execve calls 7415 both patches combined: real 0m19.777s user 0m28.010s sys 0m4.100s cc-option calls 8 real 0m2.902s user 0m6.400s sys 0m1.070s execve calls 3329 Conclusion: - complete build time reduced from 1m11s to 20s - incremental rebuild time reduced from 20s to 3s - cc-option calls reduced from 3024 to 8 - execve calls reduced from 16502 to 3329 Best regards, Daniel _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot