NRules规则Repo.Compile()速度慢



我几周前就开始使用NRules了。我很喜欢它。但我遇到的问题是表现。。。我有大约1500个动态构建的规则(可能有很多?(,我的规则Repo.Compile((几乎需要6秒。有人有同样的问题吗?

目的是在应用程序生存期内(通常在应用程序启动时(只编译一次规则。所以,性能成本是你应该只支付一次的。

另外,考虑使用自定义表达式编译器(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());

最新更新