Avoid useless vector coping by move semantic and using referenceness qualifier
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- リファクタリング
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- cpp
調査の方向性
まずコードベースで BlaBla::toBuffer と data_ メンバーを検索し、次に呼び出し元が一時オブジェクトと非一時オブジェクトからどのようにバッファーを取得しているかを調べます。issue の ref-qualified な toBuffer と asBuffer の例を動作の目標として使用し、一時オブジェクトの使用によって不要なコピーが回避される一方で、通常のアクセスも引き続き利用できることを確認します。
索引モデルが issue の本文から書いたものです。
説明
For example:
const std::vector<uint8_t> &BlaBla::toBuffer() const {
return data_;
}
If we use it to make BlaBla and get std::vector<uint8_t> from that and that all.
std::vector<uint8_t> vec = BlaBla().toBuffer(); // <= copy here
Will be better to use ref-qualifier to move data from sigle-used temp object:
const std::vector<uint8_t> &BlaBla::toBuffer() const & { // <= method for case of usual object
return data_;
}
std::vector<uint8_t> BlaBla::toBuffer() const && { // <= method for case of temp object
return std::move(data_);
}
std::vector<uint8_t> &BlaBla::asBuffer() { // <= method to access internal vector
return data_;
}
const std::vector<uint8_t> &BlaBla::asBuffer() const { // <= method to RO-access internal vector
return data_;
}
- 主要言語
- C++
- スター
- 492
- フォーク
- 130
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
libp2p/cpp-libp2p のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
libp2p/cpp-libp2p#351 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
libp2p/cpp-libp2p#347 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
libp2p/cpp-libp2p#341 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
libp2p/cpp-libp2p#332 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
libp2p/cpp-libp2p#324 · コメント 1 件 · リアクション 1 件 ·
libp2p/cpp-libp2p の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
Component: GLib
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
brave/brave-browser#59300 ·
-
Mute ydb/tests/functional/dstool/test_canonical_requests.py.Test.test_group_take_snapshot in main オープンai_reviewed
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
ydb-platform/ydb#53974 · コメント 3 件 ·