java.nio.DirectByteBuffer クラスのソースコードを見ると、次のことがわかりました。
if ((length << 0) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) ....
長さをゼロビットシフトする目的は何ですか? これは、パフォーマンスの最適化か何か他のものでしょうか?
私はそれを解決したと思います。
クラスJavaDocsで:
// -- This file was mechanically generated: Do not edit! -- //
したがって、ハンドコーディングではありません。これはスクリプトで生成されたものであり、スクリプト作成者はビット シフト量がゼロの場合の最適化を追加していません。
やることi << 0
はノーオペレーションです。と同じに評価されi
ます。
はi << 0
明らかに冗長です。Java プログラマーがこのコードを意図的に書く正当な理由はありません。
このコードは次のようになります。
<<
オペレーターが何をするかを理解していない人によって書かれた、ただし、バイトコードまたは JIT コンパイラーがこれを最適化するか、いずれにしてもパフォーマンスに大きな影響を与えない可能性は十分にあります。