package com.hzmc.epc.plugin;
import com.hzmc.common.epc.model.AuditEventBO;
import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.results.format.ResultFormatType;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import static com.hzmc.epc.plugin.count.CustomElementAdapter.FUNC_MAP;
@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@State(Scope.Thread)
@Warmup(iterations = 30, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 50, time = 1, timeUnit = TimeUnit.SECONDS)
@Fork(1)
@Threads(2)
public class BenchmarkTest {
static Set<String> keys;
static List<String> list = new java.util.ArrayList<>();
static {
keys = FUNC_MAP.keySet();
list.add("o_req_len");
list.add("o_resp_len");
}
@Benchmark
public void apply() {
AuditEventBO auditEventBO = new AuditEventBO();
FUNC_MAP.get("e_time").apply(auditEventBO);
}
@Benchmark
public void apply2() {
AuditEventBO auditEventBO = new AuditEventBO();
FUNC_MAP.get("o_req_len").apply(auditEventBO);
FUNC_MAP.get("o_resp_len").apply(auditEventBO);
}
@Benchmark
public void apply2List() {
AuditEventBO auditEventBO = new AuditEventBO();
for (String key : list) {
FUNC_MAP.get(key).apply(auditEventBO);
}
}
@Benchmark
public void applyAllOnlyGet() {
AuditEventBO auditEventBO = new AuditEventBO();
for (String key : keys) {
}
}
@Benchmark
public void applyAll() {
AuditEventBO auditEventBO = new AuditEventBO();
for (String key : keys) {
FUNC_MAP.get(key).apply(auditEventBO);
}
}
@Benchmark
public void get() {
AuditEventBO auditEventBO = new AuditEventBO();
auditEventBO.getETime();
}
@Benchmark
public void getAll() {
AuditEventBO auditEventBO = new AuditEventBO();
auditEventBO.getEId();
auditEventBO.getETime();
auditEventBO.getECategory();
auditEventBO.getEType();
auditEventBO.getECapDevType();
auditEventBO.getECapDevId();
auditEventBO.getECapDevIp();
auditEventBO.getETerminalId();
auditEventBO.getECapDevName();
auditEventBO.getSOsUser();
auditEventBO.getSDbUser();
auditEventBO.getSPerCert();
auditEventBO.getSDevCert();
auditEventBO.getSDevIp();
auditEventBO.getSDevPort();
auditEventBO.getSDevMac();
auditEventBO.getSDevName();
auditEventBO.getSAppPath();
auditEventBO.getSAppName();
auditEventBO.getSAppHash();
auditEventBO.getSAppSign();
auditEventBO.getSTDevIp();
auditEventBO.getSTDevPort();
auditEventBO.getSTDevMac();
auditEventBO.getSTAccount();
auditEventBO.getSTAppName();
auditEventBO.getSSecurityUser();
auditEventBO.getSDevIpGeo();
auditEventBO.getCTime();
auditEventBO.getCTimeMico();
auditEventBO.getCSession();
auditEventBO.getBActionCategory();
auditEventBO.getBAction();
auditEventBO.getOId();
auditEventBO.getOName();
auditEventBO.getOType();
auditEventBO.getOSvrIp();
auditEventBO.getOSvrPort();
auditEventBO.getOObjType();
auditEventBO.getOObject();
auditEventBO.getOSchema();
auditEventBO.getOStatement();
auditEventBO.getOStandard();
auditEventBO.getOVariable();
auditEventBO.getOFilePath();
auditEventBO.getRMatchedId();
auditEventBO.getRMatchedName();
auditEventBO.getRResponse();
auditEventBO.getRRiskName();
auditEventBO.getRRiskType();
auditEventBO.getRRisk();
auditEventBO.getRRiskAll();
auditEventBO.getRAudit();
auditEventBO.getFAffected();
auditEventBO.getFRunningTime();
auditEventBO.getFErr();
auditEventBO.getReviewStatus();
auditEventBO.getReviewRemark();
auditEventBO.getRaw();
auditEventBO.getFErrDescription();
auditEventBO.getRRiskDescription();
auditEventBO.getFromStandard();
auditEventBO.getDimensionKey();
auditEventBO.getStreamTimeInterval();
auditEventBO.getOStandardId();
auditEventBO.getToolSql();
auditEventBO.getIsBlackList();
auditEventBO.getSIdentityName();
auditEventBO.getSIdentityGroupName();
auditEventBO.getSSqlTruncate();
auditEventBO.getSSqlSize();
auditEventBO.getTenantId();
auditEventBO.getORespMsg();
auditEventBO.getOReqLen();
auditEventBO.getORespLen();
auditEventBO.getSMsgList();
auditEventBO.getOReqHeader();
auditEventBO.getORespHeader();
auditEventBO.getOReqBody();
auditEventBO.getOProtocol();
auditEventBO.getOAppDomain();
auditEventBO.getOAppMac();
auditEventBO.getOReqContentType();
auditEventBO.getORespContentType();
auditEventBO.getServiceUnitId();
auditEventBO.getBusinessTypeId();
auditEventBO.getOUserAgent();
auditEventBO.getOCookie();
auditEventBO.getOReferrer();
auditEventBO.getReqDataTag();
auditEventBO.getRespDataTag();
auditEventBO.getDataTagLevel();
auditEventBO.getGeoLocation();
auditEventBO.getRequestInfo();
auditEventBO.getAttackPhase();
auditEventBO.getOUid();
auditEventBO.getOServiceName();
auditEventBO.getOInstanceName();
auditEventBO.getTargetAppKey();
auditEventBO.getTargetAppName();
}
@Benchmark
public void get2() {
AuditEventBO auditEventBO = new AuditEventBO();
auditEventBO.getOReqLen();
auditEventBO.getORespLen();
}
public static void main(String[] args) throws Exception {
Options opts = new OptionsBuilder()
.include(BenchmarkTest.class.getSimpleName())
.resultFormat(ResultFormatType.JSON)
.build();
new Runner(opts).run();
}
}
Benchmark Mode Cnt Score Error Units
BenchmarkTest.apply thrpt 50 30306.494 ± 1347.150 ops/ms
BenchmarkTest.apply2 thrpt 50 30277.233 ± 1537.006 ops/ms
BenchmarkTest.apply2List thrpt 50 29796.231 ± 856.000 ops/ms
BenchmarkTest.applyAll thrpt 50 802.073 ± 11.162 ops/ms
BenchmarkTest.applyAllOnlyGet thrpt 50 6999.791 ± 46.101 ops/ms
BenchmarkTest.get thrpt 50 31166.424 ± 576.618 ops/ms
BenchmarkTest.get2 thrpt 50 30720.373 ± 654.457 ops/ms
BenchmarkTest.getAll thrpt 50 29893.775 ± 539.495 ops/ms