I'd be curious to know if changing "rustc -O" to "rustc --opt-level=3" has any effect. Which is to say, I'm curious if currently we make any distinction at all between opt levels 2 and 3.
Also, what version of Rust? I believe our support for LLVM-SIMD-vectorization-pass voodoo only landed recently. On Tue, Sep 24, 2013 at 2:13 PM, Tim Kuehn <tku...@cmu.edu> wrote: > To make it a "fair" fight, I converted the Go and C++ versions to trace > "Rust" instead. These are my results on my Macbook Pro: > > === RUST === > $ rustc -O bin.rs > $ time ./bin > rrays.ppm > > real 0m14.472s > user 0m14.102s > sys 0m0.365s > > === GO === > $ go build main.go > $ time ./main > grays.ppm > > real 0m13.928s > user 0m13.914s > sys 0m0.020s > > === C++ === > $ gcc -O crays.cpp > $ time ./a.out > crays.ppm > > real 0m10.800s > user 0m10.794s > sys 0m0.005s > > === RANKINGS === > 1) C++ : 10.8s > 2) Go : 13.9s > 3) Rust : 14.5s > > > On Tue, Sep 24, 2013 at 1:59 PM, Geoffrey Irving <irv...@naml.us> wrote: > >> It seems like rust would perform better in this benchmark against >> languages like Erlang and Haskell, which have even longer names. >> >> Geoffrey >> >> On Sep 24, 2013, at 10:08 AM, John Mija <jon...@proinbox.com> wrote: >> >> > Summary: Rustc 17.7s, Go 13.6s, Clang 11.2s, GCC 10.4s. >> > >> > Note that the versions in Clang, G++ and Go are rendering the word "Go" >> while that the Rust version is rendering a word bigger "Rust" >> > >> > System: x86_64 GNU/Linux 3.8.0-30-generic >> > Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz >> > 4 GB RAM >> > >> > I've used Rust trunk, Go 1.1.2: >> > >> > $ gcc --version >> > gcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3 >> > >> > $ clang --version >> > Ubuntu clang version 3.2-1~exp9ubuntu1 (tags/RELEASE_32/final) (based >> on LLVM 3.2) >> > Target: x86_64-pc-linux-gnu >> > Thread model: posix >> > >> > $ go version >> > go version go1.1.2 linux/amd64 >> > >> > $ rust --version >> > rust 0.8 (b6fe27c 2013-09-24 07:06:09 -0700) >> > host: x86_64-unknown-linux-gnu >> > >> > * * * >> > >> > $ rustc --opt-level=3 raytracer.rs -o rayt-rust >> > $ time ./rayt-rust > rayt-rust.ppm >> > >> > real 0m17.746s >> > user 0m17.332s >> > sys 0m0.404s >> > >> > $ go tool 6g raytracer.go && go tool 6l -o rayt-go raytracer.6 && rm >> raytracer.6 >> > >> > $ time ./rayt-go > rayt-go.ppm >> > >> > real 0m13.664s >> > user 0m13.656s >> > sys 0m0.008s >> > >> > $ clang -O3 -lm raytracer.cpp -o rayt-clang >> > $ time ./rayt-clang > rayt-clang.ppm >> > >> > real 0m11.199s >> > user 0m11.188s >> > sys 0m0.004s >> > >> > $ g++ -O3 -lm raytracer.cpp -o rayt-g++ >> > $ time ./rayt-g++ > rayt-g++.ppm >> > >> > real 0m10.411s >> > user 0m10.404s >> > sys 0m0.000s >> > >> > >> > El 24/09/13 14:52, Huon Wilson escribió: >> >> On 24/09/13 16:18, John Mija wrote: >> >>> Since a post in HN about a raytracer into a business card, a guy built >> >>> the implementation in Go: >> >>> >> >>> https://groups.google.com/forum/#!topic/golang-nuts/mxYzHQSV3rw >> >>> >> >>> The C++ version: https://gist.github.com/kid0m4n/6680629 >> >>> The Go version: https://github.com/kid0m4n/gorays >> >>> >> >>> Performance (2.2 Ghz Quad Core (2675QM), 16 GB RAM, OX 10.9, Go >> 1.1.2): >> >>> >> >>> C++ version: 11.803 s >> >>> Go version: 28.883 s >> >>> >> >>> * * * >> >>> It would be interesting if somebody with experience in Rust could >> >>> build the version in Rust to compare the speed. >> >>> _______________________________________________ >> >>> Rust-dev mailing list >> >>> Rust-dev@mozilla.org >> >>> https://mail.mozilla.org/listinfo/rust-dev >> >> >> >> I bit: https://github.com/huonw/card-trace >> >> >> >> Summary: Clang 13.8s, GCC 17.9s, Rustc 17.9s. >> >> >> >> (1.9GHz 3517U, 8 GB, linux. GCC: 4.8.1, Clang: 3.3, rustc: 18e3bcd >> >> 2013-09-23 23:46:05 -0700.) >> >> >> >> I just did essentially a transliteration of the C++ into (reasonably >> >> idiomatic) Rust, I imagine one could make it faster with some effort, >> >> but that would be cheating (at least, it would then become a test of >> >> *my* micro-optimisation ability, rather than that of the compilers). It >> >> appears that clang vectorises/uses SSE directly more eagerly than >> either >> >> gcc or rustc from some quick poking with perf. >> >> >> >> (I don't have Go on this computer to compare; although I imagine the >> >> only comparison of interest would be with gccgo, since "normal" go >> >> doesn't optimise anywhere near as much as LLVM does.) >> >> >> >> Huon >> >> _______________________________________________ >> >> Rust-dev mailing list >> >> Rust-dev@mozilla.org >> >> https://mail.mozilla.org/listinfo/rust-dev >> >> >> >> >> > _______________________________________________ >> > Rust-dev mailing list >> > Rust-dev@mozilla.org >> > https://mail.mozilla.org/listinfo/rust-dev >> >> >> _______________________________________________ >> Rust-dev mailing list >> Rust-dev@mozilla.org >> https://mail.mozilla.org/listinfo/rust-dev >> >> > > _______________________________________________ > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev > >
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev