Thanks, guys. I checked out tags/RELEASE_380/final and compiled that in Release mode with assertions off, and verified that the resulting binaries were "optimized" (see clang-tidy output below). Still runs about 33% slower. But, I'm going to chalk this up to a older and probably stripped down version of clang that I have on my system; this may not be an apples-to-apples comparison. I do want the customizability that I get from compiling from source, so I'm going to stick with this.
Thanks again, Jim $ clang-tidy --version LLVM (http://llvm.org/): LLVM version 3.8.0 Optimized build. Built Mar 25 2016 (18:53:39). Default target: x86_64-apple-darwin15.0.0 Host CPU: westmere On Wed, Mar 23, 2016 at 12:19 PM, David Blaikie <dblai...@gmail.com> wrote: > Yeah, not sure, sorry - I don't often do performance measurements of Clang. > > Don's advice is probably about right. > > On Wed, Mar 23, 2016 at 5:29 AM, jps...@gmail.com <jps...@gmail.com> > wrote: > >> Hi Don and David, just wanted to see if you guys had any quick thoughts >> on any of this before I just resign to live with a 35% slower clang than >> I'm used to (it's possible that the previous version from Xcode is much >> slimmed down or otherwise very carefully tuned in some way). >> >> Thank you, >> Jim >> >> On Fri, Mar 18, 2016 at 9:42 AM, jps...@gmail.com <jps...@gmail.com> >> wrote: >> >>> David and Don, thanks for your tips. We're making progress as the new >>> clang is only about 35% slower instead of 50% slower, but not quite at >>> parity yet. Here's what I did: >>> >>> 1. deleted everything and started over, as Don suggested (I just checked >>> out the source code from scratch again) >>> >>> 2. configured with cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release >>> -DLLVM_ENABLE_ASSERTIONS=OFF ../llvm >>> >>> 3. built >>> >>> Now I'm seeing that clang-tidy --verbose correctly says this new version >>> doesn't have assertions enabled, and is optimized (for some reason >>> clang-tidy shows more details than clang when passing --verbose): >>> >>> clang-tidy --version >>> LLVM (http://llvm.org/): >>> LLVM version 3.9.0svn >>> Optimized build. >>> Built Mar 17 2016 (16:05:27). >>> Default target: x86_64-apple-darwin15.0.0 >>> Host CPU: westmere >>> >>> However, when doing my benchmarking with the xcode version of clang >>> (3.7), it's still about 35% faster than my newly compiled version: >>> >>> Benchmarking compiling about 20 C++ files: >>> Original from xcode (3.7): 27s >>> >>> New from svn (3.9): 37s >>> >>> >>> I also noticed that the new clang binary is significantly larger than >>> the original one. I'm sharing this as it may provide some clues to what's >>> going on. I'm happy to grep for symbols if that would also be helpful. >>> >>> ORIGINAL FROM XCODE (3.7): >>> ls -ltah >>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang >>> -rwxr-xr-x 1 root wheel 42M Sep 22 19:25 >>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang >>> >>> NEW FROM SVN (3.9): >>> ls -ltah /Users/jim/toolchains/llvm/bin/clang-3.9 >>> -rwxr-xr-x 1 jim staff 54M Mar 17 17:00 >>> /Users/jim/toolchains/llvm/bin/clang-3.9 >>> >>> >>> Anyone have any ideas on anything else to try to get my newly compiled >>> clang-3.9 as fast as my system-installed clang-3.7? Are there additional >>> options I should be passing to configure the cmake files, other than >>> Release and turning off LLVM assertions? >>> >>> Thanks very much. >>> >>> Jim >>> >>> >>> >>> >>> >>> >>> >>> On Thu, Mar 17, 2016 at 12:19 PM, don hinton <hinto...@gmail.com> wrote: >>> >>>> It looks like you are rerunning cmake without first removing the cache, >>>> CMakeCache.txt. Since the option () command that sets >>>> LLVM_ENABLE_ASSERTIONS didn't include FORCE, the previous cached value is >>>> preserved. >>>> >>>> Therefore, I'd recommend always removing the cache -- I actually blow >>>> away the entire directory tree -- and starting from scratch. >>>> >>>> To ensure (re)builds don't take too long, I also use ccache. Although >>>> it works great for llvm, clang, etc..., it does break the libcxx and >>>> libcxxabi tests under check-all, but I've submitted a couple trivial >>>> patches that fix that problem. >>>> >>>> hth... >>>> don >>>> On Mar 17, 2016 11:26 AM, "David Blaikie via cfe-users" < >>>> cfe-users@lists.llvm.org> wrote: >>>> >>>>> >>>>> >>>>> On Wed, Mar 16, 2016 at 3:36 PM, jps...@gmail.com <jps...@gmail.com> >>>>> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Wed, Mar 16, 2016 at 5:55 PM, David Blaikie <dblai...@gmail.com> >>>>>> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Wed, Mar 16, 2016 at 2:12 PM, jps...@gmail.com <jps...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> David and all, a couple more questions. I stumbled upon >>>>>>>> http://llvm.org/docs/Packaging.html and see a few other options. >>>>>>>> For a typical clang build where I am not hacking on clang, but I do >>>>>>>> want >>>>>>>> good error messages for debugging my programs, >>>>>>>> >>>>>>> >>>>>>> Define "my programs" - are you using LLVM as a library? If so, you >>>>>>> probably want a with-asserts build for development so you get better >>>>>>> failures when you use LLVM incorrectly. If you're just using Clang as a >>>>>>> normal compiler - a build without assertions should be just fine. If you >>>>>>> hit a crash in the compiler you can still file it, and we'll run in >>>>>>> with an >>>>>>> assertions-enabled build to investigate further, generally. >>>>>>> >>>>>> >>>>>> Just using clang (and clang tools) -- not using LLVM as a library. >>>>>> So, running without assertions seems right for my needs. >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>>> which options are recommended [1]? It seems like I should use >>>>>>>> --disable-assertions, but I'm not sure about enable-debug-symbols and >>>>>>>> enable-optimized (which seem at odds with each other?). >>>>>>>> >>>>>>> >>>>>>> If you're using LLVM as a library, but not expecting to be able to >>>>>>> fix any bugs in it yourself, probably optimized with assertiotns and >>>>>>> without debug info should be fine. >>>>>>> >>>>>>> If you're just using clang as a compiler, release (optimized), no >>>>>>> assertions, no debug info. >>>>>>> >>>>>>> >>>>>> >>>>>> It seems that just enabling -DCMAKE_BUILD_TYPE=Release is not >>>>>> sufficient to turn off assertions as I tried that and when I run >>>>>> clang-tidy >>>>>> --version it says " LLVM version 3.9.0svn; Optimized build with >>>>>> assertions." So, I'm going to try --disable-assertions >>>>>> --enable-optimized --disable-debug-symbols (or the environment >>>>>> variable equivalents). >>>>>> >>>>>> That seem right to you? >>>>>> >>>>> >>>>> Yeah, sounds about right. >>>>> >>>>> >>>>>> It's still confusing to me that there's no CMAKE_BUILD_TYPE that >>>>>> enables these sorts of options as a bundle, but I guess that's what I get >>>>>> from compiling from source. >>>>>> >>>>> >>>>> Yeah - not sure what the right recipe is for building things the same >>>>> as the official releases. No doubt it's written down somewhere... >>>>> >>>>> >>>>>> >>>>>> Thanks >>>>>> Jim >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> [1] >>>>>>> >>>>>>>> --disable-assertions--enable-debug-symbols--enable-optimized >>>>>>>> [2] >>>>>>>> >>>>>>>> $ clang --version >>>>>>>> >>>>>>>> clang version 3.9.0 (trunk 263648) >>>>>>>> >>>>>>>> Target: x86_64-apple-darwin15.0.0 >>>>>>>> >>>>>>>> Thread model: posix >>>>>>>> >>>>>>>> InstalledDir: /Users/jim/toolchains/llvm/bin >>>>>>>> >>>>>>>> On Wed, Mar 16, 2016 at 2:05 PM, jps...@gmail.com <jps...@gmail.com >>>>>>>> > wrote: >>>>>>>> >>>>>>>>> Got it -- thanks! >>>>>>>>> >>>>>>>>> >>>>>>>>> On Wednesday, March 16, 2016, David Blaikie <dblai...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Wed, Mar 16, 2016 at 7:25 AM, jps...@gmail.com via cfe-users < >>>>>>>>>> cfe-users@lists.llvm.org> wrote: >>>>>>>>>> >>>>>>>>>>> Hi, I recently installed "Release" clang (svn r263305) from >>>>>>>>>>> source on my OSX machine, and it's compiling a 20 file C++ program >>>>>>>>>>> about >>>>>>>>>>> 50% slower than the natively installed clang 3.7 (that came with >>>>>>>>>>> xcode, I >>>>>>>>>>> believe, although I don't use xcode). I currently have both sets of >>>>>>>>>>> tools >>>>>>>>>>> installed and am able to switch back and forth and verify using >>>>>>>>>>> time that >>>>>>>>>>> clang 3.7 takes about 30 seconds and clang 3.9 takes about 45 >>>>>>>>>>> seconds, on >>>>>>>>>>> average (all flags, settings, etc. are the same for both). I did >>>>>>>>>>> build with >>>>>>>>>>> "Release" as the build type, although I also did set >>>>>>>>>>> DLLVM_ENABLE_ASSERTIONS=ON (could this be the problem?). >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Yes, the build system should print a warning telling you that an >>>>>>>>>> assertions enabled build can be up to ten times slower. Performance >>>>>>>>>> comparisons/measurements of an assertions enabled compiler aren't >>>>>>>>>> something >>>>>>>>>> we really do/tune for. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> More details below. Please let me know if you have any ideas >>>>>>>>>>> about why this newer clang would be noticable slower. >>>>>>>>>>> >>>>>>>>>>> Generally, I'm just trying to use clang as a user, not a clang >>>>>>>>>>> developer, so if you have general recommendations for how to >>>>>>>>>>> configure >>>>>>>>>>> this, please let me know. >>>>>>>>>>> >>>>>>>>>>> Thank you, >>>>>>>>>>> Jim >>>>>>>>>>> >>>>>>>>>>> How I configured and installed: >>>>>>>>>>> >>>>>>>>>>> cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release >>>>>>>>>>> -DLLVM_ENABLE_ASSERTIONS=ON ../llvm >>>>>>>>>>> make >>>>>>>>>>> cmake -DCMAKE_INSTALL_PREFIX=$CLANG_PREFIX -P cmake_install.cmake >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Here are some specifics: >>>>>>>>>>> >>>>>>>>>>> $ uname -a >>>>>>>>>>> Darwin localhost 15.0.0 Darwin Kernel Version 15.0.0: Wed Aug 26 >>>>>>>>>>> 16:57:32 PDT 2015; root:xnu-3247.1.106~1/RELEASE_X86_64 x86_64 >>>>>>>>>>> >>>>>>>>>>> $ clang --version >>>>>>>>>>> clang version 3.9.0 (trunk 263305) >>>>>>>>>>> Target: x86_64-apple-darwin15.0.0 >>>>>>>>>>> Thread model: posix >>>>>>>>>>> InstalledDir: /Users/jim/toolchains/llvm/bin >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> cfe-users mailing list >>>>>>>>>>> cfe-users@lists.llvm.org >>>>>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> cfe-users mailing list >>>>> cfe-users@lists.llvm.org >>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users >>>>> >>>>> >>> >> >
_______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users