java异步刷新集合,同步和异步集合的性能测试,异步集合性能测试,package cn.o
同步和異步集合的性能測試,異步集合性能測試,package cn.opackage cn.outofmemory.snippets.core;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Vector;import java.util.concurrent.TimeUnit;public class CollectionExample { static int loops; public static void main(String[] args) { loops = 10; performTest(new Vector()); performTest(new ArrayList()); performTest(Collections.synchronizedList(new ArrayList())); System.out.println("Synchronized Vector test"); cleanGCollect(); Timestamp timSTM = new Timestamp(); performTest(new Vector()); timSTM.stop(); System.out.println("Test took " + timSTM); System.out.println("Unsynchronized vector test"); cleanGCollect(); Timestamp timeSTMUnsync = new Timestamp(); timeSTMUnsync.stop(); System.out.println("Test took " + timeSTMUnsync); double gained = ((double) (timSTM.elapsedTime() - timeSTMUnsync.elapsedTime())) / loops; System.out.println("Unsynchronized operation saves " + gained + " " + timSTM.units() + " per call"); System.out.println("Synchronized arraylist test"); cleanGCollect(); timSTM = new Timestamp(); performTest(Collections.synchronizedList(new ArrayList())); timSTM.stop(); System.out.println("Test took " + timSTM); System.out.println("Unsynchronized arraylist test"); cleanGCollect(); timeSTMUnsync = new Timestamp(); performTest(new ArrayList()); timeSTMUnsync.stop(); System.out.println("Test took " + timeSTMUnsync); gained = ((double) (timSTM.elapsedTime() - timeSTMUnsync.elapsedTime())) / loops; System.out.println("Unsynchronized operation saves " + gained + " " + timSTM.units() + " per call"); } static void cleanGCollect() { System.gc(); System.runFinalization(); System.gc(); } static void performTest(List l) { Integer integer = new Integer(0); for (int i = 0; i < loops; i++) { l.add(integer); } }}class Timestamp { private long start; private long stop; private boolean stopped = false; private TimeUnit timeUnit; public Timestamp() { this(TimeUnit.NANOSECONDS); } public Timestamp(TimeUnit units) { this.timeUnit = units; start(); } public void start() { start = System.nanoTime(); stopped = false; } public void stop() { stop = System.nanoTime(); stopped = true; } public long elapsedTime() { if (!stopped) { throw new IllegalStateException("Error while stoping timestamp"); } return timeUnit.convert(stop - start, TimeUnit.NANOSECONDS); } @Override public String toString() { try { return elapsedTime() + " " + timeUnit; } catch (IllegalStateException ex) { return " Timestamp didn't stop"; } } public String units() { return timeUnit.toString(); }}
輸出:Synchronized Vector testTest took 6187 NANOSECONDSUnsynchronized vector testTest took 309 NANOSECONDSUnsynchronized operation saves 587.8 NANOSECONDS per callSynchronized arraylist testTest took 8354 NANOSECONDSUnsynchronized arraylist testTest took 5878 NANOSECONDSUnsynchronized operation saves 247.6 NANOSECONDS per call
總結
以上是生活随笔為你收集整理的java异步刷新集合,同步和异步集合的性能测试,异步集合性能测试,package cn.o的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux系统的安全机制有哪些内容,系统
- 下一篇: 宝塔面板服务器ip地址修改_「网站」快速