Skip to content

Instantly share code, notes, and snippets.

@joaovicente
Created March 27, 2017 10:00
Show Gist options
  • Save joaovicente/9624d284ab39270c3412899bc6db44ec to your computer and use it in GitHub Desktop.
Save joaovicente/9624d284ab39270c3412899bc6db44ec to your computer and use it in GitHub Desktop.
TracyJmhBenchmark
/*
* Copyright (c) 2014, Oracle America, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Oracle nor the names of its contributors may be used
* to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.sample;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.infra.Blackhole;
import java.util.concurrent.TimeUnit;
import com.apm4all.tracy.Tracy;
public class MyBenchmark {
static final String TASK_ID = "T-1234567890123456";
static final String OPT_ID = "O-123456";
static final String COMPONENT = "myAwsomeService";
static final String OUTER = "outer";
static final String STATUS_NAME = "status";
static final int STATUS_VALUE = 200;
@Benchmark
//@BenchmarkMode(Mode.All)
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@Warmup(iterations = 2, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 10, time = 4, timeUnit = TimeUnit.SECONDS)
@Threads(5)
@Fork(2)
public void testMethodA(Blackhole bh) {
Tracy.setContext(TASK_ID, OPT_ID, COMPONENT);
Tracy.before(OUTER);
Tracy.annotate(STATUS_NAME, STATUS_VALUE);
Tracy.after(OUTER);
for (String event : Tracy.getEventsAsJson()) {
bh.consume(event);
}
Tracy.clearContext();
}
@Benchmark
//@BenchmarkMode(Mode.All)
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@Warmup(iterations = 2, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 10, time = 4, timeUnit = TimeUnit.SECONDS)
@Threads(5)
@Fork(2)
public void testMethodA1(Blackhole bh) {
Tracy.setContext("null", "null", "COMPONENT");
Tracy.before("OUTER");
Tracy.annotate("status", 200);
Tracy.after("OUTER");
for (String event : Tracy.getEventsAsJson()) {
bh.consume(event);
}
Tracy.clearContext();
}
@Benchmark
//@BenchmarkMode(Mode.All)
@BenchmarkMode(Mode.SampleTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@Warmup(iterations = 2, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 10, time = 4, timeUnit = TimeUnit.SECONDS)
@Threads(5)
@Fork(2)
public void testMethodB(Blackhole bh) {
Tracy.setContext("null", "null", "COMPONENT");
Tracy.before("OUTER");
Tracy.annotate("status", "\"200");
Tracy.after("OUTER");
for (String event : Tracy.getEventsAsJson()) {
bh.consume(event);
}
Tracy.clearContext();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment