使用せず、アトミックを使用することを強くお勧めします。指定しても適切に動作することは注目に値します。指定すると適切に動作しないことがあることです。強力な保証をしているためです。スイッチは、取得と解放のセマンティクスを実装しています。これらのセマンティクスをコンパイル時に維持するだけでは不十分です。プロセッサにそれらのセマンティクスをコード実行中に維持するように指示します。そのため、揮発性変数を使用する場合、変数がレジスタにキャッシュされないだけでなく、追加の命令が生成されるために、パフォーマンスが低下します。コンパイラが提供するセマンティクスに似ています。純粋な取得/解放のセマンティクスを実装しています。取得/解放のセマンティクスがないことを忘れないでください。詳細はここで取り扱う範囲を超えているので触れません。バリアによってコンパイラによるさまざまな最適化が行われなくなる場合があります。そもそもコンパイラがこのような保証を提供しない場合は、プロセッサによって提供される対応する保証が自動的に無効になります。レジスタ割り当てと命令スケジューリングの両方に影響します。使用すると最適化の効果を大幅に高めることができます。スコープ内にあるこのキーワードによってマークされたポインター変数は、スコープ外で作成されてオブジェクトの変更に使用される、同じオブジェクトを参照する他の変数がないことを示します。このキーワードによって、コンパイラはポインターに対して、確信を持って自動ベクター化やループの最適化など、多数の最適化を実行できるようになるため、生成されるコードのサイズが削減されます。キーワードは、極秘のハイテク最適化抑止対策ツールと考えることができます。回のコラムになるため、ここでは説明しません。キーワードが優先されます。完全に無視されることがあります。スイッチを使用すると、指定したアーキテクチャに合わせて微調整された命令スケジューリングをコンパイラが実行できるようになります。サイズが小さくなる場合があります。ヒット率が高まり、パフォーマンスが向上します。プロセッサで最適なパフォーマンスを実現するコードが生成されます。つの重要な最適化として、レジスタ割り当てと命令スケジューリングについて説明しました。キャッシュへのアクセスよりもレジスタへのアクセスの方がはるかに短時間であることから、レジスタ割り当ては、コンパイラが実行する最適化の中で最も重要なものです。命令スケジューリングも同様に重要です。最新のプロセッサにはすばらしい動的実行機能があるため、命令スケジューリングの重要性は以前ほど大きくありません。コンパイラが関数の規模にかかわらず関数のすべての命令を認識できても、プロセッサは限られた数の命令しか認識できません。アウトオブオーダー実行ハードウェアは、コアが機能している限り機能するため、非常に多くの電力を消費します。モデルを実装しており、パフォーマンスが向上する可能性のある特定の命令の順序変更が行われません。そのため、コンパイラベースの命令スケジューリングは、電力の限られるデバイスにとって、依然として非常に重要です。スイッチが、パフォーマンスにマイナスまたはプラスの影響を及ぼすことがあります。そのため、これらのキーワードやスイッチを適切に使用し、コードの実行ができる限り短時間で行われ、適切な結果が得られるようにする必要があります。取り上げたい最適化はまだたくさんあります。次回のコラムをお待ちください。テクノロジ向けのコンパイラ最適化について研究しています。詳細な調査に費やしています。