最近、インタビューについて質問がありました。ビット単位の演算をパフォーマンスの観点から比較するように求められました。
同様に、さまざまなビット演算のパフォーマンスについて簡単に説明します。
この質問はかなり一般的でかなりマシン固有である可能性があると思いますが、これについてはいくつかの一般的なルールがあるはずです。これについては言及する必要があります(私は言及しませんでした:)。
だから-あなたは何に答えますか?
また、C (またはC ++など)でのパフォーマンスを比較することをお勧めします。これらの言語は、コンパイラーがビット関連の最適化を実行するためのより多くのスペースを提供すると想定しているためです。
ありがとうございました。
さて、完全な問題のコンテキスト。
インタビューにはいくつかのセクションがあり、それらのいくつかは本当にケーキであり、いくつかは悪夢でした。ビット関連のセクションはちょっと大変で、次のような質問が含まれていました。
浮動小数点数の仕様
float
、、double
高速
float
->int
変換(範囲がわかっている場合はさらに高速)
これらはそれほど難しいものではありませんでしたが、このビット関連セクションの最後の質問として、私が知っているビット演算を列挙し、それらのパフォーマンスを比較するように求められました。
「アーキテクチャ、コンパイラ、...具体的、実際には問題ではない、ビット単位はすでにかなり低レベルである」など、あまり説明的ではないものに答えましたが、この答えはひどいものだと思います。