자바 Benchmark 기준 테스트 의 인 스 턴 스 상세 설명
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Threads;
import org.openjdk.jmh.annotations.Warmup;
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;
@BenchmarkMode(Mode.Throughput)//
@OutputTimeUnit(TimeUnit.SECONDS)//
@Warmup(iterations = 3)//
@Threads(2)//
@State(Scope.Thread)//
// :iterations ,time ,timeUnit ,batchSize
@Measurement(iterations = 2, time = -1, timeUnit = TimeUnit.SECONDS, batchSize = -1)
public class InstructionsBenchmark{
static int staticPos = 0;
//String src = "SELECT a FROM ab , ee.ff AS f,(SELECT a FROM `schema_bb`.`tbl_bb`,(SELECT a FROM ccc AS c, `dddd`));";
final byte[] srcBytes = {83, 69, 76, 69, 67, 84, 32, 97, 32, 70, 82, 79, 77, 32, 97, 98, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 44, 32, 101, 101, 46, 102, 102, 32, 65, 83, 32, 102, 44, 40, 83, 69, 76, 69, 67, 84, 32, 97, 32, 70, 82, 79, 77, 32, 96, 115, 99, 104, 101, 109, 97, 95, 98, 98, 96, 46, 96, 116, 98, 108, 95, 98, 98, 96, 44, 40, 83, 69, 76, 69, 67, 84, 32, 97, 32, 70, 82, 79, 77, 32, 99, 99, 99, 32, 65, 83, 32, 99, 44, 32, 96, 100, 100, 100, 100, 96, 41, 41, 59};
int len = srcBytes.length;
byte[] array = new byte[8192];
int memberVariable = 0;
//run
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
.include(InstructionsBenchmark.class.getSimpleName())
.forks(1)
// hsdis
//-XX:-TieredCompilation -server
//-XX:+LogCompilation hotspot_pid.log , JITWatch , hotspot_pid.log
.jvmArgs("-XX:+UnlockDiagnosticVMOptions", "-XX:+LogCompilation", "-XX:+TraceClassLoading", "-XX:+PrintAssembly")
// .addProfiler(CompilerProfiler.class) // report JIT compiler profiling via standard MBeans
// .addProfiler(GCProfiler.class) // report GC time
// .addProfiler(StackProfiler.class) // report method stack execution profile
// .addProfiler(PausesProfiler.class)
/*
WinPerfAsmProfiler
You must install Windows Performance Toolkit. Once installed, locate directory with xperf.exe file
and either add it to PATH environment variable, or set it to jmh.perfasm.xperf.dir system property.
*/
//.addProfiler(WinPerfAsmProfiler.class)
// Profiler, JMH
//.output("InstructionsBenchmark.log")//
.build();
new Runner(opt).run();
}
//
@Benchmark
public int emptyLoop() {
int pos = 0;
while (pos < len) {
++pos;
}
return pos;
}
@Benchmark
public int increment() {
int pos = 0;
int result = 0;
while (pos < len) {
++result;
++pos;
}
return result;
}
@Benchmark
public int decrement() {
int pos = 0;
int result = 0;
while (pos < len) {
--result;
++pos;
}
return result;
}
@Benchmark
public int ifElse() {
int pos = 0;
int result = 0;
while (pos < len) {
if (pos == 10) {
++result;
++pos;
} else {
++pos;
}
}
return result;
}
@Benchmark
public int ifElse2() {
int pos = 0;
int result = 0;
while (pos < len) {
if (pos == 10) {
++result;
++pos;
} else if (pos == 20) {
++result;
++pos;
} else {
++pos;
}
}
return result;
}
@Benchmark
public int ifnotElse() {
int pos = 0;
int result = 0;
while (pos < len) {
if (pos != 10) {
++pos;
} else {
++result;
++pos;
}
}
return result;
}
@Benchmark
public int ifLessthanElse() {
int pos = 0;
int result = 0;
while (pos < len) {
if (pos < 10) {
++pos;
} else {
++result;
++pos;
}
}
return result;
}
@Benchmark
public int ifGreaterthanElse() {
int pos = 0;
int result = 0;
while (pos < len) {
if (pos > 10) {
++pos;
} else {
++result;
++pos;
}
}
return result;
}
@Benchmark
public int readMemberVariable_a_byteArray() {
int pos = 0;
int result = 0;
while (pos < len) {
result = srcBytes[pos];
pos++;
}
return result;
}
}
ops/time: 매 초 실행 횟수 를 표시 합 니 다.
jar 패키지 의존:
org.openjdk.jmh
jmh-core
${jmh.version}
org.openjdk.jmh
jmh-generator-annprocess
${jmh.version}
provided
org.codehaus.mojo
exec-maven-plugin
run-benchmarks
integration-test
exec
test
java
-classpath
org.openjdk.jmh.Main
.*
이상 은 자바 Benchmark 기준 테스트 입 니 다. 궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 하 십시오. 읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다. 본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.