Rustのランタイムライブラリー

現状Rustにはランタイムライブラリーが2つ実装されていて、ネイティブスレッドを使うlibnativeとグリーンスレッドを使うlibgreenがある。詳細はA Guide to the Rust Runtimeにある。

実際にそれぞれのランタイムライブラリーを使ったFizzBuzzを作って試してみる。

mainの内容は同じで、両方ともスレッドを10000作る。エントリーポイントのstartだけが違う。

$ rustc --version
rustc 0.10
host: x86_64-apple-darwin
$ rustc -O fizzbuzz-native.rs
$ rustc -O fizzbuzz-green.rs
$ time ./fizzbuzz-native > /dev/null

real	0m0.219s
user	0m0.111s
sys	0m0.243s
$ time ./fizzbuzz-green > /dev/null

real	0m0.086s
user	0m0.106s
sys	0m0.056s

今回のケースのように、スレッドを大量に生成する場合にはグリーンスレッドを使ったほうが性能がよい。