1 Star 1 Fork 0

xiaoch0209/wast-jmh-test

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
WastElPerSecondJmhTest.java 3.18 KB
一键复制 编辑 原始数据 按行查看 历史
xiaoch0209 提交于 7个月前 . update versions and add case
package com.jmh.test.expression;
import io.github.wycst.wast.common.expression.CacheableExpression;
import io.github.wycst.wast.common.expression.Expression;
import io.github.wycst.wast.common.expression.compile.CompilerExpression;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Mode;
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.runner.options.TimeValue;
import java.util.concurrent.TimeUnit;
/**
* @Date 2024/10/23 17:38
* @Created by wangyc
*/
public class WastElPerSecondJmhTest {
final static String staticEl = "1+2";
final static String dynamicsEl = "a+a+a+b+b";
final static Expression wastParsedEl;
final static Expression wastCompiledEl;
final static Fact fact = new Fact();
public static class Fact {
public int a = 1;
public int b = 2;
public int c = 3;
}
static {
wastParsedEl = Expression.parse(dynamicsEl);
wastCompiledEl = CompilerExpression.createEnvironment()
.objectParameterClass(Fact.class)
.variableTypes(int.class, "a", "b")
.compile(dynamicsEl);
}
@Benchmark
public Object staticExpr() {
return Expression.eval(staticEl);
}
@Benchmark
public Object cacheableStaticExpr() {
return CacheableExpression.eval(staticEl);
}
@Benchmark
public Object dynamicsDirect() {
return Expression.evalParameters(dynamicsEl, fact.a, fact.b);
}
@Benchmark
public Object dynamicsParsedWithPojo() {
return wastParsedEl.evaluate(fact);
}
@Benchmark
public Object dynamicsParsedWithParameters() {
return wastParsedEl.evaluateParameters(fact.a, fact.b);
}
@Benchmark
public Object compileParameters() {
return wastCompiledEl.evaluateParameters(fact.a, fact.b);
}
@Benchmark
public Object compilePojo() {
return wastCompiledEl.evaluate(fact);
}
@Benchmark
public Object javaCode() {
return fact.a + fact.a + fact.a + fact.b + fact.b;
}
public static void main(String[] args) throws RunnerException {
System.out.println("staticExpr result " + Expression.eval(staticEl));
System.out.println("cacheableStaticExpr result " + CacheableExpression.eval(staticEl));
System.out.println("dynamicsDirect result " + Expression.evalParameters(dynamicsEl, fact.a, fact.b));
System.out.println("dynamicsParsedWithPojo result " + wastParsedEl.evaluate(fact));
System.out.println("dynamicsParsedWithParameters result " + wastParsedEl.evaluateParameters(fact.a, fact.b));
Options options = new OptionsBuilder()
.include(WastElPerSecondJmhTest.class.getName())
.mode(Mode.Throughput)
.timeUnit(TimeUnit.SECONDS)
.warmupTime(TimeValue.seconds(3))
.measurementTime(TimeValue.seconds(3))
.forks(1)
.build();
new Runner(options).run();
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/xiaoch0209/wast-jmh-test.git
git@gitee.com:xiaoch0209/wast-jmh-test.git
xiaoch0209
wast-jmh-test
wast-jmh-test
main

搜索帮助