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相关推荐

  1. java算术表达式_一文了解如何用 Java 进行算术表达式计算

    (给ImportNew加星标,提高Java技能) 编译:ImportNew/唐尤华 如何用Java计算"5+3"."10-40"."10*3" ...

  2. java面向对象实现表达式计算,java面向对象课程设计-数学表达式计算器

    项目简介 设计一个计算器,其能够: 1)由用户输入一个简单的四则运算表达式,求出其计算结果后显示. 2)特殊数学函数,如:绝对值.取整.三角函数.倒数.平方根.平方.立方等. 3)对一定范围内的数字将 ...

  3. Java逆波兰表达式计算

    后缀表达式(逆波兰表达式) 运算符位于操作数之后 从左至右扫描表达式,遇到数字遇到数字时,将数字压栈,遇到运算符时,弹出栈顶的两个元素,用运算符对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈, ...

  4. Fel是轻量级的高效的表达式计算引擎学习(一)

    Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel的执行主要是通过函数实现,运算符(+.-等都是Fel函数),所有这 ...

  5. Fel表达式计算引擎学习 侵删

    Fel的问题 Fel的问题 Fel是轻量级的高效的表达式计算引擎 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel ...

  6. Fel表达式计算引擎学习

    载原文地址:Fel是轻量级的高效的表达式计算引擎 Fel的问题 Fel的问题 Fel是轻量级的高效的表达式计算引擎 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开 ...

  7. java fel_Java表达式引擎fel/groovy/expression4j/java脚本引擎的性能对比【原创】

    又是性能对比,最近跟性能较上劲了. 产品中需要用到数学表达式,表达式不复杂,但是对性能要求比较高.选用了一些常用的表达式引擎计算方案,包含:java脚本引擎(javax/script).groovy脚 ...

  8. Fel表达式计算引擎

    一.Fel表达式计算引擎介绍 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel的执行主要是通过函数实现,运算符(+ ...

  9. Fel轻量高效的表达式计算引擎

    Fel是轻量级的高效的表达式计算引擎 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel的执行主要是通过函数实现,运 ...

最新文章

  1. CSS-布局样式之筛选条件右边线的处理方法(no CSS3)
  2. 二次开发基于无线网卡的扫描
  3. 相关方登记册模板_项目的主要相关方
  4. 【Linux】一步一步学Linux——set命令(222)
  5. 使用Flash读取COOKIE
  6. cura-engine学习(1)
  7. python画图配色_python matplotlib包图像配色方案分享
  8. linux网站如何添加swf支持,linux下安装swftools和openOffice
  9. Android View的绘制机制流程深入详解(一)
  10. hdu 1255 覆盖的面积 (扫描线求矩形交)
  11. 多个key作为参数进行删除_作为开发人员这些Redis基础应该掌握
  12. android在副屏中运行一个应用_android一个app打开另一个app的指定页面
  13. 计算机系统应用 莫军,ARINC653分区操作系统多核处理器任务调度设计
  14. 利用NAS打造协同办公系统
  15. 蓝桥杯 算法提高 盾神与条状项链
  16. 生成1-100随机数并进行猜测
  17. 一篇文章让你看懂信息安全领域的巨鳄(小白必看)
  18. 电脑开机时按F几重装系统
  19. TS+vue3 页面红色波浪线(和声明类型有关)
  20. PS 中图层为索引,修改成背景可编辑

热门文章

  1. 帝国cms7.5内核自适应导航站模板制作教程记录
  2. App Store预览视频制作(App Previews)
  3. Python学习路线免费分享
  4. UVA - 11624 Fire!
  5. 五行与情志的之间的相生相克
  6. 从零开始带你玩转单片机----------【第一期】
  7. Python新年快乐炫酷烟花秀代码
  8. redis集群节点连不上的原因之一
  9. java-企业微信推送消息
  10. EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成