]> granicus.if.org Git - clang/commitdiff
Optimize dyld startup time by specifying a trivial export map
authorChris Lattner <sabre@nondot.org>
Wed, 18 Feb 2009 04:02:00 +0000 (04:02 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 18 Feb 2009 04:02:00 +0000 (04:02 +0000)
(only export main) on the mac.

This improves DYLD_PRINT_STATISTICS from:
total time: 6.0 milliseconds (100.0%)
total images loaded:  5 (4 from dyld shared cache, 3 needed no fixups)
total segments mapped: 0, into 0 pages with 0 pages pre-fetched
total images loading time: 0.0 milliseconds (1.4%)
total rebase fixups:  0
total rebase fixups time: 0.0 milliseconds (0.0%)
total binding fixups: 7,928
total binding symbol lookups: 4,087, average images searched per symbol: 1.9
total binding fixups time: 4.7 milliseconds (79.2%)
total bindings lazily fixed up: 170 of 4,372
total init time time: 1.1 milliseconds (19.2%)
total images with weak exports:  2

to:
total time: 1.4 milliseconds (100.0%)
total images loaded:  5 (4 from dyld shared cache, 4 needed no fixups)
total segments mapped: 0, into 0 pages with 0 pages pre-fetched
total images loading time: 0.0 milliseconds (5.7%)
total rebase fixups:  0
total rebase fixups time: 0.0 milliseconds (0.2%)
total binding fixups: 1,079
total binding symbol lookups: 75, average images searched per symbol: 1.0
total binding fixups time: 0.5 milliseconds (33.9%)
total bindings lazily fixed up: 14 of 216
total init time time: 0.8 milliseconds (60.0%)
total images with weak exports:  1

This reduces the time to -fsyntax-only cocoa.h with PTH from 0.192s to 0.184 (4.3%)

rdar://6505315

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64882 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/Makefile

index 22d7ffbfb5965d1b469b85014ed91fd91fdc0b96..d4b939052c995bd0d8d4cb7950b21433ecf06223 100644 (file)
@@ -8,6 +8,12 @@ CXXFLAGS = -fno-rtti
 # early so we can set up LINK_COMPONENTS before including Makefile.rules
 include $(LEVEL)/Makefile.config
 
+# Optimize startup time of the app by not exporting all of the weak symbols
+# from the binary.  This reduces dyld startup time by 4x.
+ifeq ($(OS),Darwin)
+LD.Flags += -Wl,-exported_symbol -Wl,_main
+endif
+
 LINK_COMPONENTS := $(TARGETS_TO_BUILD) bitreader bitwriter codegen ipo selectiondag
 USEDLIBS = clangCodeGen.a clangAnalysis.a clangRewrite.a clangSema.a   \
            clangDriver.a clangAST.a clangParse.a clangLex.a            \