top | item 8742107

Ruby compiled with Clang is 8% faster than with GCC 4.9, 44% faster than GCC 4.7

67 points| gandalfar | 11 years ago |cirandas.net

9 comments

order

izietto|11 years ago

Frankly I don't trust in "5% boost, 20% boost, 44% faster" claims without knowing how the benchmark was performed.

cbsmith|11 years ago

I'd also wonder about a project that should have been tuned for a particular compiler really getting that much faster between versions of that compiler...

joevandyk|11 years ago

It would be neat to get a step-by-step list of what he did to compile this version of Ruby, what GC variables he used, etc.

fbernier|11 years ago

Using https://github.com/postmodern/ruby-install it's pretty easy:

  ruby-install ruby 2.1.5 -- CC=clang
and if you want to include all the patches listed here: https://github.com/wayneeseguin/rvm/blob/master/patchsets/ru...

  ruby-install ruby 2.1.5 -p https://raw.githubusercontent.com/skaes/rvm-patchsets/master/patches/ruby/2.1.5/railsexpress/01-zero-broken-tests.patch -p https://raw.githubusercontent.com/skaes/rvm-patchsets/master/patches/ruby/2.1.5/railsexpress/02-improve-gc-stats.patch -p https://raw.githubusercontent.com/skaes/rvm-patchsets/master/patches/ruby/2.1.5/railsexpress/03-display-more-detailed-stack-trace.patch -p https://raw.githubusercontent.com/skaes/rvm-patchsets/master/patches/ruby/2.1.5/railsexpress/04-show-full-backtrace-on-stack-overflow.patch -p https://raw.githubusercontent.com/skaes/rvm-patchsets/master/patches/ruby/2.1.5/railsexpress/05-funny-falcon-stc-density.patch -p https://raw.githubusercontent.com/skaes/rvm-patchsets/master/patches/ruby/2.1.5/railsexpress/06-funny-falcon-stc-pool-allocation.patch -p https://raw.githubusercontent.com/skaes/rvm-patchsets/master/patches/ruby/2.1.5/railsexpress/07-aman-opt-aset-aref-str.patch -p https://raw.githubusercontent.com/skaes/rvm-patchsets/master/patches/ruby/2.1.5/railsexpress/08-funny-falcon-method-cache.patch -- CC=clang
and you can use it with https://github.com/postmodern/chruby if you need to to switch between versions.

As for GC, I am not sure it makes much of a difference as it used to back in the days. Probably even less when 2.2 ships with incremental garbage collection. It always depends on the type of work your app does also.

tedunangst|11 years ago

In particular, it sounds like gcc 4.7 was running on debian and gcc 4.9 was on ubuntu? So not different compilers, but different everythings?

mrinterweb|11 years ago

I agree with most of the comments here that 44% faster sounds way too good to be true. Perhaps there is some micro-benchmark where this gain was perceived. A more through blog post to substantiate or disprove these performance gains would be welcome.

jbert|11 years ago

It'd be really interesting to see the methodology used when gains like this are reported, because it's potentially really interesting stuff but without knowing what was measured and changed, it's hard to give it weight.

Which is a shame, because it's probably really useful.

i.e. what's the workload. what was the performance metric which improved. any detail you can give about the likely bottleneck of the system, etc.

krisdol|11 years ago

What, exactly, is faster? Why does this have 50 points when there is no content?