タグ

ブックマーク / www.bit-hive.com (2)

  • Rustで構造体を実体化して返す際のコスト - ビットハイブ

    Rustで構造体を実体化して返す際のコスト 最近、勉強がてらちょこちょことRustで遊んでいます。そこで以前から少し気になっていたのは、構造体を実体化(instanciate)して返す場合のコストです。 公式のドキュメント https://doc.rust-lang.org/book/ch05-01-defining-structs.html などを見ると、構造体を実体化して返す例として以下のようなコードが挙げられています(Listing 5-4: A build_user function that takes an email and username and returns a User instanceより)。 fn build_user(email: String, username: String) -> User { User { email: email, username

  • RustにおけるNRVO - ビットハイブ

    RustにおけるNRVO 以前こちらの記事で、Rustで構造体を実体化して返すケースでもコストを調べました。結果はC++でいうRVO(Return Value Optimization)と同じようなコピー省略の最適化が効いているというものでしたが、前回は右辺値を返すケースだけだったので、左辺値(変数)を返す場合にも最適化(C++でいうNRVO - Named Return Value Optimization)が効くのかも調べてみました。 前回と同様、逆アセンブル結果を見るのもいいのですが、面倒なのと、同じことをやっても面白みがないのでrustcが生成している中間コード(MIR)をみることで確認していこうと思います。 MIRとはMid-level Intermediate Representationの略でrustcにおけるLLVM IRを生成する一歩手前の中間表現になります。以下のページ

  • 1