下面列出了怎么用org.openjdk.jmh.annotations.Fork的API类实例代码及写法,或者点击链接到github查看源代码。
/** Benchmark for measuring HttpTraceContext extract. */
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@Fork(1)
@Measurement(iterations = 15, time = 1)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 5, time = 1)
@OperationsPerInvocation(COUNT)
@Nullable
public Context measureExtract() {
Context result = null;
for (int i = 0; i < COUNT; i++) {
result = httpTraceContext.extract(Context.ROOT, carriers.get(i), getter);
}
return result;
}
@Benchmark
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(
iterations = 10
)
@Measurement(
iterations = 10
)
@Fork(1)
public void vavrOps() {
js.map(i -> i * 2)
.flatMap(i->Vector.range(0,10))
.map(i -> i * 2)
.filter(i -> i < 5000)
.map(i -> "hello " + i)
.zip(Vector.range(0,1000000))
.map(i->i._1())
.map(i -> i.length())
.reduce((a, b) -> a + b);
}
@Benchmark
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(
iterations = 10
)
@Measurement(
iterations = 10
)
@Fork(1)
public void guavaSet(){
for(int i=0;i<10000;i++) {
guava = com.google.common.collect.ImmutableList.<String>builder().addAll(guava.subList(0,i)).add(""+i).addAll(guava.subList(i+1,guava.size())).build();
}
}
/** Benchmark the full span lifecycle. */
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@Fork(1)
@Measurement(iterations = 15, time = 1)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 5, time = 1)
public void measureFullSpanLifecycle() {
span = tracer.spanBuilder("span").startSpan();
try (io.opentelemetry.context.Scope ignored = tracer.withSpan(span)) {
// no-op
} finally {
span.end();
}
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@Fork(1)
@Measurement(iterations = 15, time = 1)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 5, time = 1)
public void measureSpanBuilding() {
span = tracer.spanBuilder("span").startSpan();
}
@Benchmark
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(iterations = 5, time=1)
@Measurement(iterations = 5, time=1)
@Fork(1)
public void benchmarkFindInFile() throws IOException {
Set<String> patterns = sample.getPattern();
File text = sample.getFile();
for (String pattern : patterns) {
List<Integer> result = find(pattern, text);
results.put(pattern, result);
}
}
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@Fork(1)
@Measurement(iterations = 15, time = 1)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 5, time = 1)
public void measureGetCurrentSpan() {
tracer.getCurrentSpan();
}
/** Benchmark for measuring inject with default trace state and sampled trace options. */
@Benchmark
@BenchmarkMode({Mode.AverageTime})
@Fork(1)
@Measurement(iterations = 15, time = 1)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@Warmup(iterations = 5, time = 1)
@OperationsPerInvocation(COUNT)
public Map<String, String> measureInject() {
for (int i = 0; i < COUNT; i++) {
httpTraceContext.inject(contexts.get(i), carrier, setter);
}
return carrier;
}
/** Benchmark for measuring inject with default trace state and sampled trace options. */
@Benchmark
@Measurement(iterations = 15, time = 1)
@Warmup(iterations = 5, time = 1)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@BenchmarkMode(Mode.AverageTime)
@Fork(1)
public Map<String, String> measureInject() {
Context context =
TracingContextUtils.withSpan(DefaultSpan.create(contextToTest), Context.current());
doInject(context, carrier);
return carrier;
}
@Benchmark
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(
iterations = 10
)
@Measurement(
iterations = 10
)
@Fork(1)
public void cyclopsOps() {
for(int i=0;i<1000;i++)
seq = seq.prepend(i);
}
@Benchmark
@Fork(1)
@Warmup(iterations = 5, time = 1)
@Measurement(iterations = 10, time = 1)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Threads(value = 10)
public void aggregate_10Threads() {
aggregator.recordDouble(100.0056);
}
@Benchmark
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(iterations = 5, time=1)
@Measurement(iterations = 5, time=1)
@Fork(1)
public void benchmarkFindInString() {
Set<String> patterns = sample.getPattern();
String text = sample.getSample();
for (String pattern : patterns) {
List<Integer> result = find(pattern, text);
results.put(pattern, result);
}
}
@Benchmark
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(iterations = 5, time=1)
@Measurement(iterations = 5, time=1)
@Fork(1)
public void benchmarkFindInString() {
result = find(sample.getSample());
}
@Benchmark
@Fork(1)
@Warmup(iterations = 5, time = 1)
@Measurement(iterations = 10, time = 1)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Threads(value = 10)
public void aggregate_10Threads() {
aggregator.recordLong(100);
}
@Benchmark
@Fork(1)
@Warmup(iterations = 5, time = 1)
@Measurement(iterations = 10, time = 1)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Threads(value = 5)
public void aggregate_5Threads() {
aggregator.recordLong(100);
}
@Benchmark
@Threads(value = 1)
@Fork(1)
@Warmup(iterations = 5, time = 1)
@Measurement(iterations = 10, time = 1)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public void addAttributesEventsStatusEnd_01Thread() {
doSpanWork(span);
}
@Benchmark
@Threads(value = 5)
@Fork(1)
@Warmup(iterations = 5, time = 1)
@Measurement(iterations = 10, time = 1)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public void addAttributesEventsStatusEnd_05Threads() {
doSpanWork(span);
}
@Benchmark
@Threads(value = 2)
@Fork(1)
@Warmup(iterations = 5, time = 1)
@Measurement(iterations = 10, time = 1)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public void addAttributesEventsStatusEnd_02Threads() {
doSpanWork(span);
}
@Benchmark
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(
iterations = 10
)
@Measurement(
iterations = 10
)
@Fork(1)
public void vavrOps() {
js.filter(i -> Integer.parseInt(i) % 2==0);
}
@Benchmark
@Threads(value = 5)
@Fork(1)
@Warmup(iterations = 5, time = 1)
@Measurement(iterations = 5, time = 1)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public void runThePipeline_05Threads() {
doWork();
}
@Benchmark
@Fork(1)
@Warmup(iterations = 5, time = 1)
@Measurement(iterations = 10, time = 1)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
public ResultCode export() {
return exporter.export(spans);
}
@Benchmark
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(
iterations = 10
)
@Measurement(
iterations = 10
)
@Fork(1)
public void listAppend(){
for(int i=0;i<1000;i++){
list.add(""+i);
}
}
@Benchmark
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(
iterations = 10
)
@Measurement(
iterations = 10
)
@Fork(1)
public void reactiveSeqFindFirst() {
ReactiveSeq.of(1,2,3)
.findFirst().get();
}
@Warmup(iterations = 5)
@Measurement(iterations = 10)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Fork(value = 1)
@Threads(8)
@Benchmark
public void putIfAbsent(Blackhole blackhole,BenchmarkState state,ThreadState threadState) {
for (int i = 0; i < threadState.numRows; ++i) {
Map.Entry<String, String> pair = threadState.rows.get(i);
state.oakMap.zc().put(pair.getKey(), pair.getValue());
blackhole.consume(state.oakMap);
}
}
@Warmup(iterations = 5)
@Measurement(iterations = 10)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@Fork(value = 1)
@Threads(8)
@Benchmark
public void get(Blackhole blackhole,BenchmarkState state,ThreadState threadState) {
String key = state.keys.get(threadState.i++ % state.numRows);
String val = state.oakMap.get(key);
blackhole.consume(val);
}
@Warmup(iterations = 1)
@Measurement(iterations = 10)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Fork(value = 1)
@Threads(1)
@Benchmark
public void put(Blackhole blackhole, BenchmarkState state) {
for (int i=0; i < state.bytes; ++i) {
state.byteBuffer.put(i, (byte) i);
}
}
@Benchmark
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(iterations = 5, time=1)
@Measurement(iterations = 5, time=1)
@Fork(1)
public void benchmarkFindInFile() throws IOException {
result = find(sample.getFile());
}
@Benchmark
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(
iterations = 10
)
@Measurement(
iterations = 10
)
@Fork(1)
public void guavaAppend(){
for(int i=0;i<1000;i++){
guava = ImmutableList.<String>builder().addAll(guava).add(""+i).build();
}
}
@Benchmark
@Fork(value = 1, warmups = 1)
@BenchmarkMode(Mode.SingleShotTime)
@Warmup(iterations = 1)
@Measurement(iterations = 5)
public void sortArraysArrayList() {
arraysArrayList.sort(KeyValuePair.PAIR_COMPARATOR);
}
@Benchmark
@Fork(value = 1, warmups = 1)
@BenchmarkMode(Mode.Throughput)
@Warmup(iterations = 1)
public void init_with_keccak(Blackhole blackhole) {
blackhole.consume(Function.parse("sam(bytes,bool,uint256[])", new Keccak(256)));
}