我几周前就开始使用NRules了。我非常喜欢它。但是我得到的问题是性能..。我有大约1500条规则(可能很多吧?)动态构建,并且我的rulesRepo.Compile()几乎需要6秒。有没有人有同样的问题?
发布于 2021-06-27 06:03:38
其目的是让规则在应用程序生命周期内只编译一次(通常在应用程序启动时)。因此,性能成本应该只需支付一次。
另外,考虑一个自定义表达式编译器(https://github.com/NRules/NRules/wiki/Expression-Compiler),在该编译器中,可以尝试挂钩https://github.com/dadhi/FastExpressionCompiler以加快编译速度
using FastExpressionCompiler;
public class FastExpressionCompiler : NRules.Extensibility.IExpressionCompiler
{
public TDelegate Compile<TDelegate>(Expression<TDelegate> expression) where TDelegate : Delegate
{
return expression.CompileFast();
}
}并使用创建的表达式编译器进行规则编译:
var repository = new RuleRepository();
//Load rules
var compiler = new RuleCompiler();
compiler.ExpressionCompiler = new FastExpressionCompiler();
var factory = compiler.Compile(repository.GetRuleSets());https://stackoverflow.com/questions/68106061
复制相似问题