私はコンパイラに取り組んでおり、実際に私のコードを遅くする最適化を書いていました! 調べてみると、最適化がオフのときはコード ジェネレーターがハンドル (コンパイラの場合は二重参照) を使用し、最適化がオンのときはハンドルへのポインターを使用することが決定されていることがわかりました。これにより、配列がアクセスされるたびに、2 番目のケースで参照解除命令が 1 つ増えました。
しかし、この 1 つの命令により、コードの実行時間が驚くべきことに 32% 遅くなりました。この余分な逆参照により、速度低下の原因となる可能性のある 3 つの依存命令が発生するため、これは命令パイプラインに関係していると思われます。
私は同じことを実証する必要があり、パイプライン処理についてより多くの情報を得ようとしています。誰かが命令パイプライン処理、有用なアーキテクチャ シミュレータ、およびパイプライン ビジュアライザに関する優れた資料を提案できれば幸いです。