3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【初投稿】Rustの文字連結をベンチマークしてみました。

Posted at

はじめに

見ていただいて、ありがとうございます。
とある大学生のn0taです。

初めてのqiita投稿なので、優しい目で見ていただけると嬉しいです。

また、プログラミングについても知識不足のため、間違っている点などがございましたら、教えていただけると幸いです。

今回は、Rustの文字連結方法をベンチマークしてみました。

なぜ行ったのか?

今回、私がなぜベンチマークを行ったのかというと、文字連結を大量に行うコードを書く機会があり、どの書き方が一番速くなるのかが気になったからです。

皆さんも今回のベンチマークを参考にしてみてください。

文字連結方法

下記の3つで試みてみました。

  • Stringにstrを追加する
  • Stringとstrを連結させ、新しいStringを作成する
  • Sringとstrをformatマクロに入れる

関数紹介

関数の内容は下記の通りです。

// Stringにstrを追加する関数
pub fn string_push_str() -> String {
    let mut s1: String = String::from("Hello");
    let slice: &str = ", World!";
    s1.push_str(slice);
    s1
}

// Stringとstrを連結させ、新しいStringを作成する関数
pub fn string_concat_str() -> String {
    let s1: String = String::from("Hello");
    let slice: &str = ", World!";
    let s2: String = s1 + slice;
    s2
}

// Sringとstrをformatマクロに入れ、新しいStringを作成する関数
pub fn string_format_str() -> String {
    let s1: String = String::from("Hello");
    let slice: &str = ", World!";
    let s2 = format!("{}{}", s1, slice);
    s2
}

実行環境

  • rustc 1.71.0-nightly

実行コマンド

# bash or terminal
# cargoのbenchコマンドがnightlyのみ対応しているので、変更しています。
$ rustup default nightly

$ cargo bench

結論

下記の結果となりました。

running 3 tests
test bench_string_concat_str ... bench:          36 ns/iter (+/- 0)
test bench_string_format_str ... bench:          99 ns/iter (+/- 4)
test bench_string_push_str   ... bench:          36 ns/iter (+/- 0)

test result: ok. 0 passed; 0 failed; 0 ignored; 3 measured; 0 filtered out; finished in 0.94s

formatマクロを使った場合、著しく速度がかかりました。(約3倍ほど…)

マクロは汎用的に使えるため、非常に便利なのですが、今回は単純な処理だったので、帰って遅くなってしまったのではないでしょうか?

使用したソースコード

感想

今回はRustの文字連結方法をベンチマークしてみました。

Rustは非常に安全性の高い言語であり、今後もさらに繁栄していくと思うので、これからも挑戦していきたいです。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?