查看 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 编译器很有可能会优化它,或者它不会对性能产生显着影响。