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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值