50 @Warmup(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS)
51 @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
52 public class CopyOnWriteArrayListBenchmark {
53
54 private static byte[] getSerializedBytes(CopyOnWriteArrayList<?> list) throws IOException {
55 ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
56 ObjectOutputStream objectOut = new ObjectOutputStream(bytesOut);
57 objectOut.writeObject(list);
58
59 objectOut.close();
60 return bytesOut.toByteArray();
61 }
62
63 private Collection<Object> emptyCollection = new ArrayList<>();
64 private Object[] emptyArray = new Object[0];
65
66 private Collection<Object> oneItemCollection = Arrays.asList("");
67 private Object[] oneItemArray = new Object[] { "" };
68
69 private CopyOnWriteArrayList<?> emptyInstance = new CopyOnWriteArrayList<>();
70 private CopyOnWriteArrayList<?> oneItemInstance = new CopyOnWriteArrayList<>(oneItemArray);
71
72 private byte[] emptyInstanceBytes;
73 private byte[] oneInstanceBytes;
74
75 public CopyOnWriteArrayListBenchmark() {
76 try {
77 emptyInstanceBytes = getSerializedBytes(emptyInstance);
78 oneInstanceBytes = getSerializedBytes(oneItemInstance);
79 } catch (IOException e) {
80 throw new RuntimeException(e);
81 }
82 }
83
84 @Benchmark
85 public void clear() {
86 // have to create a new instance on each execution
87 ((CopyOnWriteArrayList<?>) oneItemInstance.clone()).clear();
88 }
89
90 @Benchmark
91 public void clearEmpty() {
92 emptyInstance.clear();
93 }
94
|
50 @Warmup(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS)
51 @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
52 public class CopyOnWriteArrayListBenchmark {
53
54 private static byte[] getSerializedBytes(CopyOnWriteArrayList<?> list) throws IOException {
55 ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
56 ObjectOutputStream objectOut = new ObjectOutputStream(bytesOut);
57 objectOut.writeObject(list);
58
59 objectOut.close();
60 return bytesOut.toByteArray();
61 }
62
63 private Collection<Object> emptyCollection = new ArrayList<>();
64 private Object[] emptyArray = new Object[0];
65
66 private Collection<Object> oneItemCollection = Arrays.asList("");
67 private Object[] oneItemArray = new Object[] { "" };
68
69 private CopyOnWriteArrayList<?> emptyInstance = new CopyOnWriteArrayList<>();
70 @SuppressWarnings("initialization")
71 private CopyOnWriteArrayList<?> oneItemInstance = new CopyOnWriteArrayList<>(oneItemArray);
72
73 private byte[] emptyInstanceBytes;
74 private byte[] oneInstanceBytes;
75
76 @SuppressWarnings("initialization")
77 public CopyOnWriteArrayListBenchmark() {
78 try {
79 emptyInstanceBytes = getSerializedBytes(emptyInstance);
80 oneInstanceBytes = getSerializedBytes(oneItemInstance);
81 } catch (IOException e) {
82 throw new RuntimeException(e);
83 }
84 }
85
86 @Benchmark
87 public void clear() {
88 // have to create a new instance on each execution
89 ((CopyOnWriteArrayList<?>) oneItemInstance.clone()).clear();
90 }
91
92 @Benchmark
93 public void clearEmpty() {
94 emptyInstance.clear();
95 }
96
|