8274715: Implement forEach in Collections.CopiesList
Reviewed-by: martin
This commit is contained in:
parent
d4e8712c0a
commit
df7b0c7077
@ -5182,6 +5182,16 @@ public class Collections {
|
||||
return element;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forEach(Consumer<? super E> action) {
|
||||
Objects.requireNonNull(action);
|
||||
int n = this.n;
|
||||
E element = this.element;
|
||||
for (int i = 0; i < n; i++) {
|
||||
action.accept(element);
|
||||
}
|
||||
}
|
||||
|
||||
public Object[] toArray() {
|
||||
final Object[] a = new Object[n];
|
||||
if (element != null)
|
||||
|
@ -0,0 +1,34 @@
|
||||
package micro.org.openjdk.bench.java.util;
|
||||
|
||||
import org.openjdk.jmh.annotations.*;
|
||||
import org.openjdk.jmh.infra.Blackhole;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* @see <a href="https://bugs.openjdk.java.net/browse/JDK-8274715">JDK-8274715</a>
|
||||
*/
|
||||
@Fork(value = 3)
|
||||
@State(Scope.Thread)
|
||||
@BenchmarkMode(Mode.AverageTime)
|
||||
@OutputTimeUnit(TimeUnit.NANOSECONDS)
|
||||
@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
|
||||
@Measurement(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS)
|
||||
public class NCopiesBenchmarks {
|
||||
@Param({"10", "50", "100"})
|
||||
int size;
|
||||
|
||||
private List<Object> list;
|
||||
|
||||
@Setup
|
||||
public void prepare() {
|
||||
list = Collections.nCopies(size, new Object());
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public void forEach(Blackhole bh) {
|
||||
list.forEach(bh::consume);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user