java fel api_Java表达式计算-Fel
Fel是支持表达式计算的一个库(java)。
Fel支持解释执行和编译执行,可以根据性能要求选择执行方式。
下面给出示例和性能测试数据:
package datagene;
import java.util.Random;
import com.greenpineyu.fel.Expression;
import com.greenpineyu.fel.FelEngine;
import com.greenpineyu.fel.FelEngineImpl;
import com.greenpineyu.fel.context.FelContext;
import com.greenpineyu.fel.parser.FelNode;
public class Expr {
public static void main(String[] args) {
Random random = new Random();
Object result = null;
long time = System.nanoTime();
for(int i = 0; i < 200000000; i++) {
result = random.nextInt(1000) * random.nextInt(1000) +
random.nextInt(1000);
}
System.out.println(((float)(System.nanoTime() - time) / 1000000) + "ms");
FelEngine fel1 = new FelEngineImpl();
FelContext ctx1 = fel1.getContext();
time = System.nanoTime();
for(int i = 0; i < 1000000; i++) {
ctx1.set("a", random.nextInt(1000));
ctx1.set("b", random.nextInt(1000));
ctx1.set("c", random.nextInt(1000));
result = fel1.eval("a * b + c");
}
System.out.println(((float)(System.nanoTime() - time) / 1000000) + "ms");
FelEngine fel2 = new FelEngineImpl();
FelNode node = fel2.parse("a * b + c");
FelContext ctx2 = fel2.getContext();
time = System.nanoTime();
for(int i = 0; i < 200000000; i++) {
ctx2.set("a", random.nextInt(1000));
ctx2.set("b", random.nextInt(1000));
ctx2.set("c", random.nextInt(1000));
result = node.eval(ctx2);
}
System.out.println(((float)(System.nanoTime() - time) / 1000000) + "ms");
FelEngine fel3 = new FelEngineImpl();
Expression exp = fel3.parse("a * b + c");
FelContext ctx3 = fel3.getContext();
time = System.nanoTime();
for(int i = 0; i < 200000000; i++) {
ctx3.set("a", random.nextInt(1000));
ctx3.set("b", random.nextInt(1000));
ctx3.set("c", random.nextInt(1000));
result = exp.eval(ctx3);
}
System.out.println(((float)(System.nanoTime() - time) / 1000000) + "ms");
}
}
输出:
java fel api_Java表达式计算-Fel相关推荐
- java算术表达式_一文了解如何用 Java 进行算术表达式计算
(给ImportNew加星标,提高Java技能) 编译:ImportNew/唐尤华 如何用Java计算"5+3"."10-40"."10*3" ...
- java面向对象实现表达式计算,java面向对象课程设计-数学表达式计算器
项目简介 设计一个计算器,其能够: 1)由用户输入一个简单的四则运算表达式,求出其计算结果后显示. 2)特殊数学函数,如:绝对值.取整.三角函数.倒数.平方根.平方.立方等. 3)对一定范围内的数字将 ...
- Java逆波兰表达式计算
后缀表达式(逆波兰表达式) 运算符位于操作数之后 从左至右扫描表达式,遇到数字遇到数字时,将数字压栈,遇到运算符时,弹出栈顶的两个元素,用运算符对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈, ...
- Fel是轻量级的高效的表达式计算引擎学习(一)
Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel的执行主要是通过函数实现,运算符(+.-等都是Fel函数),所有这 ...
- Fel表达式计算引擎学习 侵删
Fel的问题 Fel的问题 Fel是轻量级的高效的表达式计算引擎 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel ...
- Fel表达式计算引擎学习
载原文地址:Fel是轻量级的高效的表达式计算引擎 Fel的问题 Fel的问题 Fel是轻量级的高效的表达式计算引擎 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开 ...
- java fel_Java表达式引擎fel/groovy/expression4j/java脚本引擎的性能对比【原创】
又是性能对比,最近跟性能较上劲了. 产品中需要用到数学表达式,表达式不复杂,但是对性能要求比较高.选用了一些常用的表达式引擎计算方案,包含:java脚本引擎(javax/script).groovy脚 ...
- Fel表达式计算引擎
一.Fel表达式计算引擎介绍 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel的执行主要是通过函数实现,运算符(+ ...
- Fel轻量高效的表达式计算引擎
Fel是轻量级的高效的表达式计算引擎 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel的执行主要是通过函数实现,运 ...
最新文章
- CSS-布局样式之筛选条件右边线的处理方法(no CSS3)
- 二次开发基于无线网卡的扫描
- 相关方登记册模板_项目的主要相关方
- 【Linux】一步一步学Linux——set命令(222)
- 使用Flash读取COOKIE
- cura-engine学习(1)
- python画图配色_python matplotlib包图像配色方案分享
- linux网站如何添加swf支持,linux下安装swftools和openOffice
- Android View的绘制机制流程深入详解(一)
- hdu 1255 覆盖的面积 (扫描线求矩形交)
- 多个key作为参数进行删除_作为开发人员这些Redis基础应该掌握
- android在副屏中运行一个应用_android一个app打开另一个app的指定页面
- 计算机系统应用 莫军,ARINC653分区操作系统多核处理器任务调度设计
- 利用NAS打造协同办公系统
- 蓝桥杯 算法提高 盾神与条状项链
- 生成1-100随机数并进行猜测
- 一篇文章让你看懂信息安全领域的巨鳄(小白必看)
- 电脑开机时按F几重装系统
- TS+vue3 页面红色波浪线(和声明类型有关)
- PS 中图层为索引,修改成背景可编辑