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