小编kid*_*idd的帖子

为什么java中的lib func比自定义运行得更快?

我最近对 ​​Integer.bitCount 做了一些调查。我发现一个有趣的结果是 Integer.bitCount 比我自己的 func 快得多,即使代码是相同的。

我以为是JIT造成的,但是查了一下文档,发现JIT是基于运行时策略的。这让我很困惑。

public static void main(String[] args) {
    long sum = 0;
    long start, end;
    start = System.currentTimeMillis();
    for (int i = Integer.MIN_VALUE; i != Integer.MAX_VALUE; i++) {
        sum += bitCount(i);
        //sum += Integer.bitCount(i);
    }
    end = System.currentTimeMillis();
    System.out.println(sum);
    System.out.println(end - start);
}

private static int bitCount(int i) {
    i = i - ((i >>> 1) & 0x55555555);
    i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
    i = (i + (i …
Run Code Online (Sandbox Code Playgroud)

java

2
推荐指数
1
解决办法
200
查看次数

标签 统计

java ×1