|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
From 0dcc4f04883cfd87a3cbf814f61c603c7d066399 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
From: Michael Simacek <msimacek@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
Date: Wed, 2 May 2018 15:22:08 +0200
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
Subject: [PATCH] Avoid presizing arrays
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
---
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
.../common/util/concurrent/AtomicDoubleArray.java | 12 +++++++-----
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
1 file changed, 7 insertions(+), 5 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
diff --git a/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java b/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
index 407cd7c..14d0e48 100644
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
--- a/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
+++ b/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
@@ -16,8 +16,12 @@ package com.google.common.util.concurrent;
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
import static java.lang.Double.doubleToRawLongBits;
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
import static java.lang.Double.longBitsToDouble;
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
+import java.util.ArrayList;
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
+import java.util.List;
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
import java.util.concurrent.atomic.AtomicLongArray;
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
+import com.google.common.primitives.Longs;
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
+
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
/**
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
* A {@code double} array in which elements may be updated atomically.
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
* See the {@link java.util.concurrent.atomic} package specification
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
@@ -256,13 +260,11 @@ public class AtomicDoubleArray implements java.io.Serializable {
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
throws java.io.IOException, ClassNotFoundException {
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
s.defaultReadObject();
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
- // Read in array length and allocate array
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
int length = s.readInt();
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
- this.longs = new AtomicLongArray(length);
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
-
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
- // Read in all elements in the proper order.
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
+ List<Long> builder = new ArrayList<Long>();
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
for (int i = 0; i < length; i++) {
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
- set(i, s.readDouble());
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
+ builder.add(doubleToRawLongBits(s.readDouble()));
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
}
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
+ this.longs = new AtomicLongArray(Longs.toArray(builder));
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
}
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
}
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
--
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
2.17.0
|
|
![](https://seccdn.libravatar.org/avatar/80ea5bd5469f2dbf72ea4419606e47b13e62f39e50641222f89e4aa9a5cb21b5?s=16&d=retro) |
eac15b7 |
|