栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么没有取消边界检查?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么没有取消边界检查?

  1. 不,这显然是无法消除智能边界检查的结果。

我已经扩展了Marko Topolnik的基准测试:

@OutputTimeUnit(TimeUnit.NANOSECONDS)@BenchmarkMode(Mode.AverageTime)@OperationsPerInvocation(BCElimination.N)@Warmup(iterations = 5, time = 1)@Measurement(iterations = 10, time = 1)@State(Scope.Thread)@Threads(1)@Fork(2)public class BCElimination {    public static final int N = 1024;    private static final Unsafe U;    private static final long INT_base;    private static final long INT_SCALE;    static {        try { Field f = Unsafe.class.getDeclaredField("theUnsafe"); f.setAccessible(true); U = (Unsafe) f.get(null);        } catch (Exception e) { throw new IllegalStateException(e);        }        INT_base = U.arraybaseOffset(int[].class);        INT_SCALE = U.arrayIndexScale(int[].class);    }    private final int[] table = new int[BCElimination.N];    @Setup public void setUp() {        final Random random = new Random();        for (int i=0; i<table.length; ++i) table[i] = random.nextInt();    }    @GenerateMicroBenchmark public int normalIndex() {        int result = 0;        final int[] table = this.table;        int x = 0;        for (int i=0; i<=table.length-1; ++i) { x += i; final int j = x & (table.length-1); result ^= table[i] + j;        }        return result;    }    @GenerateMicroBenchmark public int maskedIndex() {        int result = 0;        final int[] table = this.table;        int x = 0;        for (int i=0; i<=table.length-1; ++i) { x += i; final int j = x & (table.length-1); result ^= i + table[j];        }        return result;    }    @GenerateMicroBenchmark public int maskedIndexUnsafe() {        int result = 0;        final int[] table = this.table;        long x = 0;        for (int i=0; i<=table.length-1; ++i) { x += i * INT_SCALE; final long j = x & ((table.length-1) * INT_SCALE); result ^= i + U.getInt(table, INT_base + j);        }        return result;    }}

结果:

Benchmark          Mean   Mean error    UnitsBCElimination.maskedIndex    1,235        0,004    ns/opBCElimination.maskedIndexUnsafe         1,092        0,007    ns/opBCElimination.normalIndex    1,071        0,008    ns/op

2.第二个问题是热点开发邮件列表,而不是恕我直言的StackOverflow。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437799.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号