私の名前はDavide Facontiで、私の仕事は世界で最高の仕事の1つです。私はRoboticsで働いています。
このブログ/リポジトリは私の暇なときに維持されており、そこでの私の仕事とは関係ありません。したがって、意見(およびミーム)はすべて私のものであり、私の雇用主を決して代表していません。
私はC ++プログラミングとオープンソースが大好きで、この「日記」はOSSコミュニティへの私の小さな貢献です。
C ++でコードを最適化することは、誰も抵抗できないものです。あなたは楽しんで、あなたがあなたの組織に同時に何か役に立つことをしているふりをすることができます!
このリポジトリでは、コードを改善し、 C ++で不必要なオーバーヘッドを削除するために、いくつかの単純な設計パターンを記録します。
あなたがベテランのC ++専門家である場合、おそらくあなた自身のルールのセットがすでにあるでしょう。
これらのルールは、同僚にとって、悪いこと/ロックスター/10倍のエンジニアのように見えるのに役立ちます。
あなたは、ループとうなずきの前にstd :: vector <> :: std :: vector <> :: smightを投げかけ、笑顔で、パフォーマンスの改善とチームメンバーの驚きを見ているような人です。

うまくいけば、このリポジトリの例は、この第一人者の状態を達成するのに役立ち、副作用として、地球温暖化から惑星を救い、役に立たないCPUサイクルが無駄にならないようにします。
その後、残念ながら、惑星の反対側の誰かがビットコインの採掘を開始するか、 Pythonで彼/彼のアプリケーションを書き始め、電気を節約するためのすべての努力は何のためでしたか。
私は冗談です、Python開発者、私たちはあなたを愛しています!
ナレーター:「彼は冗談ではなかった...」
パフォーマンスに関心がある人が最初にすべきことは、次のとおりです。
私と私の同僚は、コードが遅い理由についてほとんど常に間違っています。
時々私たちは正しいですが、リファクタリングがパフォーマンスをどのように改善するかを事前に知るのは本当に難しいです。優れたプロファイリングツールは、数分で「低ぶら下がっている果物」を示しています。最小作業、最大の利点!
要約:10分プロファイリングは、推測とリファクタリングの時間を節約できます。
Linuxの私の「GOTO」ツールは、ホットスポットとヒープトラックです。 Windowsにも同様のツールがあることを理解しています。

ベンチマーク戦争では、もしあなたが兵士なら、これらはあなたのライフルと手rena弾です。
コードのどの部分が最適化に値するかを知ったら、Googleベンチマークを使用して、非常に特定のクラスまたは機能に費やされる時間を測定することをお勧めします。
Google Benchmarkをオンラインで実行することもできます:Quick-bench.com。

良いコードを書くことはあなたの歯を磨くようなものです。あなたはそれについてあまり考えずにそれをするべきです。
それはあなたが訓練する必要がある筋肉であり、それは時間とともに強くなります。ただし、心配しないでください。開始すると、驚くほどシンプルで、さまざまなユースケースで機能する繰り返しのパターンが表示され始めます。
ネタバレ注意:私の最も愛されているトリックの1つは、ヒープの割り当ての数を最小限に抑えることです。どれだけ役立つかわからない。
しかし、何かを明確にしましょう:
言い換えれば、2.5%が速く実行される可能性があると思われるという理由だけで、コードを読みやすくするか、デバッグが難しくなるように変更する前によく考えてください。
より快適な読書体験については、https://cpp-optimizations.netlify.appをご覧ください
デフォルトでconst Referenceを使用します。
MOVE SEMANTIC(TODO)。
戻り値最適化(TODO)。
std :: vector <> ::デフォルトで予約します
「私は大学でリンクされたリストを学びました、私はそれらを使うべきですか?」ヌーペ。
そのためにはstd::map<>必要ありません。
小さなベクトル最適化
文字列は(ほぼ)ベクトルです
心配しない場合:小さな文字列の最適化。
文字列連結: operator+ 。
std::string_view :love at first sight(todo)。
例:2D/3Dは正しい方法で変換されます。
2Dマトリックスを繰り返します:エレガントではなく、パフォーマンスが高くなります。
boost::container::flat_mapを試しました。次に何が起こったのか想像しません。PCLのポイントクラウドをフィルタリングするためのよりシンプルで高速な方法。
高速パリンドローム:条件付きブランチのコスト
この作業は、CC BY-SA 4.0の下でライセンスされています