zoukankan      html  css  js  c++  java
  • 测试伪共享例子-转

    缓存行,避免缓存依赖,补充字段,清除伪共享

    1. time : 7846747771

    2. remove padding time : 36836838456

    可以看出差距非常明显

    public final class FalseSharing implements Runnable {
        public final static int NUM_THREADS = 8;
        public final static long ITERATIONS = 500L * 1000L * 1000L;
        private final int arrayIndex;
    
        private static VolatileLong[] longs = new VolatileLong[NUM_THREADS];
        static {
            for (int i = 0; i < longs.length; i++) {
                longs[i] = new VolatileLong();
            }
        }
    
        public FalseSharing(final int arrayIndex) {
            this.arrayIndex = arrayIndex;
        }
    
        public static void main(final String[] args) throws Exception {
            final long start = System.nanoTime();
            runTest();
            System.out.println("duration = " + (System.nanoTime() - start));
        }
    
        private static void runTest() throws InterruptedException {
            Thread[] threads = new Thread[NUM_THREADS];
    
            for (int i = 0; i < threads.length; i++) {
                threads[i] = new Thread(new FalseSharing(i));
            }
    
            for (Thread t : threads) {
                t.start();
            }
    
            for (Thread t : threads) {
                t.join();
            }
        }
    
        public void run() {
            long i = ITERATIONS + 1;
            while (0 != --i) {
                longs[arrayIndex].value = i;
            }
        }
    
        public final static class VolatileLong {
            public volatile long value = 0L;
            public long p1, p2, p3, p4, p5, p6;   ------use or unuse padding
        }
    }
  • 相关阅读:
    选择省市区的组件
    element ui 合计/table show-summary
    双击放大预览功能/组件
    vue 中获取初始的值
    vue 兄弟组件之间通信
    js数组常用到的方法,及其注意事项
    ps
    最有效的学习方法
    css2
    prettytable:像数据库一样格式化输出内容
  • 原文地址:https://www.cnblogs.com/it-worker365/p/7205988.html
Copyright © 2011-2022 走看看