小编Jak*_*ały的帖子

Java中“if”和“if else”的不同表现

我注意到if else/ 三元 ( condition ? a : b) 赋值比ifonly 语句中的条件赋值更快。我在不同的 JDK 上执行了 JMH 基准测试,但我将专注于 JDK 12。

(操作数/秒,越高越好) JMH 基准

源代码:

@State(Scope.Benchmark)
public class FindMaxBenchmark {
    public static int SIZE = 1_000_000;

    @Benchmark
    @CompilerControl(CompilerControl.Mode.DONT_INLINE)
    public static void findMax_if(Blackhole bh, Mock mock) {
        int result = Integer.MIN_VALUE;
        int[] data = mock.tab;

        for (int i = 0; i < data.length; i++) {
            if (data[i] > result) {
                result = data[i];
            }
        }

        bh.consume(result);
    }

    @Benchmark
    @CompilerControl(CompilerControl.Mode.DONT_INLINE)
    public static void …
Run Code Online (Sandbox Code Playgroud)

java performance jvm jmh

5
推荐指数
1
解决办法
130
查看次数

cpu缓存和cpu之间的总线宽度

在此输入图像描述 我无法计算出现代 PC 中 cpu 和 cpu 缓存之间的总线宽度。我在互联网上没有找到任何可靠的东西。我所拥有的只是Zen (AMD) 微架构的框图,其中表示 L1 和 L2 缓存每个周期可以传输 32B(256b)。我猜测总线宽度是 256 条线(假设单数据速率)。但是,存在双倍数据速率传输,例如内存控制器和 DDR 内存之间。

总结:

  1. cpu和cpu缓存之间的总线宽度是256线吗?
  2. 如果是,这是否意味着从 L1 读取整个缓存行需要两个 cpu 周期?

cpu x86 cpu-architecture cpu-cache amd-processor

3
推荐指数
1
解决办法
1204
查看次数

标签 统计

amd-processor ×1

cpu ×1

cpu-architecture ×1

cpu-cache ×1

java ×1

jmh ×1

jvm ×1

performance ×1

x86 ×1