Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

C++

std::string_viewはstd::stringに比べてどのくらい速いのか

C++

std::string_viewは文字列の所有権を保持しません。 所有権を保持しない文字列であればcharポインタを使った方が効率はいいです。 std::string_viewには文字列比較機能などがありますが所有権を持たせたくなった時に、 std::stringに変更した時の修正量が少…

Xcode C++パフォーマンスチューニング

C++

Xcode - Instruments の TimeProfierでボトルネックとなる箇所を特定し改善する。 なるべくヒープアロケーションをしない。 なるべくデータのコピーをしない。 vDSP利用を検討する。 100以上の要素数でリニアサーチを使っている箇所があればバイナリサーチに…

C++ 無名ラムダ式の即時実行

C++

C++無名ラムダ式の即時実行の仕方です。 無名ラムダ式定義し、即時実行しています。 無名ラムダの場合は引数部分を定義する必要はなく、キャプチャする変数の指定だけが必要です。 const std::vector<int> list = { 1, 2, 3 }; const auto sum = [&]() { return l</int>…

C++14 共有ロック

C++

C++14 で共有ロックというものが実装された。 これは1つのリソースに対して、1つのスレッドが書き込みを行い、2つ以上のスレッドが同時に読み込みを行うケースで用いる。 2つの読み込みスレッドは一つのstd::shard_mutexに対して、lock_shared()(共有ロッ…