java fel api_Java表达式计算-Fel

java fel api_Java表达式计算-FelFel 是支持表达式计算的一个库 java Fel 支持解释执行和编译执行 可以根据性能要求选择执行方式 下面给出示例和性能测试数据 packagedatag importjava util Random importcom greenpineyu fel Expression importcom greenpineyu fel FelEngine importcom greenpi

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 < ; i++) {

result = random.nextInt(1000) * random.nextInt(1000) +

random.nextInt(1000);

}

System.out.println(((float)(System.nanoTime() – time) / ) + “ms”);

FelEngine fel1 = new FelEngineImpl();

FelContext ctx1 = fel1.getContext();

time = System.nanoTime();

for(int i = 0; i < ; 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) / ) + “ms”);

FelEngine fel2 = new FelEngineImpl();

FelNode node = fel2.parse(“a * b + c”);

FelContext ctx2 = fel2.getContext();

time = System.nanoTime();

for(int i = 0; i < ; 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) / ) + “ms”);

FelEngine fel3 = new FelEngineImpl();

Expression exp = fel3.parse(“a * b + c”);

FelContext ctx3 = fel3.getContext();

time = System.nanoTime();

for(int i = 0; i < ; 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) / ) + “ms”);

}

}

输出:

035bfbae064a04c9ebd728e1c3f5c6fd.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232775.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 进程及进程控制块「建议收藏」

    进程及进程控制块「建议收藏」进程是程序的一个执行实例,是一个正在执行的程序。能分配处理器并由处理器执行的实体。     在一个系统上可以同时运行多个程序。并发运行,一个进程的指令和另一个进程的指令是交错执行的。     进程的两个基本元素是程序代码(可能被执行相同程序的其他进程共享)和代码相关联的数据集。进程是一种动态描述,但并不代表所有的进程都在运行(进程在内存中因策略或调度需求,会处于各种状态)。

    2025年7月22日
    3
  • java三大框架要学多久_新手学习SSH三大框架的几点建议[通俗易懂]

    java三大框架要学多久_新手学习SSH三大框架的几点建议[通俗易懂]说起三大框架,目前人们常用的是SSM,有人会认为SSH框架已经落后被淘汰了,其实这样说也不完全对。它毕竟实现了经典的MVC框架的基本功能,在有些项目还会用到。正因为用得不多,反而会出现很多问题。同时SSH在教学中也会被经常用到,笔者觉得SSH在教学中存在的意义在于能够帮助学习者理解经典MVC框架的原理。下面就简单谈一谈作为新手如何学习SSH。所谓SSH展开来讲包括了struts、spring、hi…

    2022年7月7日
    34
  • 计算机毛利润的函数,毛利率计算公式

    计算机毛利润的函数,毛利率计算公式

    2021年8月16日
    171
  • 【Android】Android游戏编程之从零开始[通俗易懂]

    【Android】Android游戏编程之从零开始[通俗易懂]《Android游戏编程之从零开始》主要系统地讲解了Android游戏开发,从最基础部分开始,让零基础的Android初学者也能快速学习和掌握Android游戏开发。《Android游戏编程之从零开始》一共8章,内容包括Android平台介绍与环境搭建、Hello,Android!项目剖析、游戏开发中常用的系统组件、游戏开发基础、游戏开发实战、游戏开发提高篇、Box2d物理引擎、物…

    2022年5月27日
    207
  • 一次搞定js中的this指向

    一次搞定js中的this指向

    2021年7月6日
    83
  • OpenWrite 博客群发使用步骤[通俗易懂]

    OpenWrite 博客群发使用步骤[通俗易懂]OpenWrite,做最懂自媒体的工具平台。主要是群发软件、博客导流公众号阅读全文工具媒体发布平台、博客群发平台、软文推广平台软文推广发布、博客发布官网引流科技小工具微信公众号Markdown编辑器、多平台免费图床配置Markdown编辑器的免费简洁流畅、文章一键群发等的免费自媒体运营工具助手注意:当前版本必须使用Chrome浏览器,并安装插件「OpenWrite助手」https://openwrite.cn/plugin-chrome/1、点击指定渠道图标,在新窗口登录渠道的账号

    2022年7月13日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号