在ILCalc的开发是一个小型的图书馆算术表达式定义的字符串,用于分析和评估。
性能:
解析速度非常快,没有必要建立任何表达式树;
不使用的神器出山:www.shenqi73.com解析器生成器,写清楚自己的解析器;
验证表达式语法,而不做任何其他工作的能力;
强类型的表达式 - 没有必要装箱/拆箱值;
灵活性:
解释/运行MSIL代之间进行选择;
所有场景下使用,根据需要评估最佳解决方案数:
一旦解释 - 使用快速模式(一通的分析和评价);
许多 - 创建解释对象并使用它用不同的参数,无需重新解析;
很多很多 - 创建:评估程序对象(动态代码生成器 - 启动速度慢,最快评估);
许多在某些参数范围 - 编译的制表对象(每一个虚拟呼叫范围);
Evaluator和制表对象:
线程安全的 - 可以很容易地在多线程的情况下使用;
编译的方法进行垃圾收集和表达的内容无关。
尽可能最快的制表 - 只为一个虚拟呼叫每个范围的特殊方法编制。
解释对象:
独立表达的情况下,可以收集到GC时不再使用;
没有内存分配评价(除了当BCL进行呼叫,通过反射);
替换一些来电与来电的代表通过反射;
优化模式:
常量折叠:2 ^ 8 + X /(6 3 + x)的成为256 + X /(9 + x)的;
折叠功能:2个*罪(π/ 6)成为2个* 0.5(提防副作用);
数值优化:X ^ 4成为X * X * X * X,巫婆的速度要快得多评估;
可定制:
通过使用用户定义的参数列表中的参数化表达式;
使用用户自定义的列表(如PI,E,INF)在表达式中的常数;
进口从任何其他的来龙去脉。NET类型的公共静态功能;
文化敏感的解析(数字格式的字符串比较,小数和参数分隔符);
或可能不使用任何的CultureInfo更高的性能解析(顺序模式);
有简单的方法来导入内置的常量和函数;
可选的标识符区分大小写模式下;
可选的算术溢出检查;
其他:
TabRange类为代表的方便的功能的值的范围;
SyntaxException类提供了语法错误的详细信息;
所有的字符串资源库可以很容易地本地化;“ILCalc”