privatestatic ExecutorService executor = new ThreadPoolExecutor(1, 1, 5, TimeUnit.SECONDS, new ArrayBlockingQueue<>(1000), new ThreadFactory() { @Override public Thread newThread(Runnable r){ Thread t = new Thread(r); t.setDaemon(true); t.setName("xrpc-test-netty-work"); return t; } });
@Test publicvoidtest()throws InterruptedException { int epoch = 20; int size = 10000; float allTime = 0; // 运行20次 for (int i = 1; i <= epoch; ++i) { final CountDownLatch latch = new CountDownLatch(size); final Semaphore semaphore = new Semaphore(300, false); long startTime = System.currentTimeMillis(); // 每次调用size次 for (int j = 1; j <= size; j++) { semaphore.acquire(); executor.submit(() -> { try { helloController.testSyncBenchMark(); } catch (InterruptedException e) { } finally { semaphore.release(); latch.countDown(); } }); } log.info("第" + i + "次运行-->提交任务完成"); // 阻塞等待调用size次任务完成 latch.await(); float epochTime = System.currentTimeMillis() - startTime; allTime += epochTime; log.info("第" + i + "次运行-->耗时:[{}] ms", epochTime); if (i == 10) { Thread.sleep(10000); } else { Thread.sleep(100); } } float num = (float) epoch * size; log.info("平均每次调用-->耗时:[{}] ms", allTime / num); new CountDownLatch(1).await(); } }
第0次运行-->耗时:[9805.0] ms 第1次运行-->耗时:[6021.0] ms 第2次运行-->耗时:[6032.0] ms 第3次运行-->耗时:[5646.0] ms 第4次运行-->耗时:[5637.0] ms 第5次运行-->耗时:[6673.0] ms 第6次运行-->耗时:[5930.0] ms 第7次运行-->耗时:[6144.0] ms 第8次运行-->耗时:[5814.0] ms 第9次运行-->耗时:[5272.0] ms 第10次运行-->耗时:[5292.0] ms 第11次运行-->耗时:[5401.0] ms 第12次运行-->耗时:[5330.0] ms 第13次运行-->耗时:[5402.0] ms 第14次运行-->耗时:[5350.0] ms 第15次运行-->耗时:[6219.0] ms 第16次运行-->耗时:[5339.0] ms 第17次运行-->耗时:[5427.0] ms 第18次运行-->耗时:[5689.0] ms 第19次运行-->耗时:[6094.0] ms 平均每次调用-->耗时:[0.592585] ms
第0次运行-->耗时:[8942.0] ms 第1次运行-->耗时:[2022.0] ms 第2次运行-->耗时:[2182.0] ms 第3次运行-->耗时:[2214.0] ms 第4次运行-->耗时:[1870.0] ms 第5次运行-->耗时:[2050.0] ms 第6次运行-->耗时:[2554.0] ms 第7次运行-->耗时:[1949.0] ms 第8次运行-->耗时:[1866.0] ms 第9次运行-->耗时:[1916.0] ms 第10次运行-->耗时:[1767.0] ms 第11次运行-->耗时:[2205.0] ms 第12次运行-->耗时:[1829.0] ms 第13次运行-->耗时:[1887.0] ms 第14次运行-->耗时:[2062.0] ms 第15次运行-->耗时:[2552.0] ms 第16次运行-->耗时:[2005.0] ms 第17次运行-->耗时:[2034.0] ms 第18次运行-->耗时:[2216.0] ms 第19次运行-->耗时:[1930.0] ms 平均每次调用-->耗时:[0.24026] ms
第0次运行-->耗时:[8796.0] ms 第1次运行-->耗时:[1614.0] ms 第2次运行-->耗时:[1730.0] ms 第3次运行-->耗时:[1752.0] ms 第4次运行-->耗时:[2035.0] ms 第5次运行-->耗时:[3431.0] ms 第6次运行-->耗时:[1993.0] ms 第7次运行-->耗时:[1936.0] ms 第8次运行-->耗时:[2045.0] ms 第9次运行-->耗时:[1888.0] ms 第10次运行-->耗时:[2067.0] ms 第11次运行-->耗时:[2282.0] ms 第12次运行-->耗时:[2699.0] ms 第13次运行-->耗时:[2703.0] ms 第14次运行-->耗时:[2289.0] ms 第15次运行-->耗时:[2572.0] ms 第16次运行-->耗时:[2519.0] ms 第17次运行-->耗时:[2438.0] ms 第18次运行-->耗时:[2681.0] ms 第19次运行-->耗时:[2515.0] ms 平均每次调用-->耗时:[0.259925] ms
第0次运行-->耗时:[8915.0] ms 第1次运行-->耗时:[2074.0] ms 第2次运行-->耗时:[2036.0] ms 第3次运行-->耗时:[1861.0] ms 第4次运行-->耗时:[1930.0] ms 第5次运行-->耗时:[1966.0] ms 第6次运行-->耗时:[1939.0] ms 第7次运行-->耗时:[2337.0] ms 第8次运行-->耗时:[3372.0] ms 第9次运行-->耗时:[2432.0] ms 第10次运行-->耗时:[2291.0] ms 第11次运行-->耗时:[2494.0] ms 第12次运行-->耗时:[2455.0] ms 第13次运行-->耗时:[3207.0] ms 第14次运行-->耗时:[2450.0] ms 第15次运行-->耗时:[2345.0] ms 第16次运行-->耗时:[2119.0] ms 第17次运行-->耗时:[2542.0] ms 第18次运行-->耗时:[2788.0] ms 第19次运行-->耗时:[2539.0] ms 平均每次调用-->耗时:[0.27046] ms