CacheControl / CacheControl/json-rules-engine

Slow performance while having large array of facts.

オープン
#324 コメント 10 件 リアクション 6 件 担当者 0 名 GitHub で見る
主要言語
JavaScript
スター
3.1k
フォーク
507
PR マージ指標
30日以内にマージされた PR はありません

説明

I have integrated json-rules-engine with a project I am working on and the performance seems much slower than I would expect. I'm using the package to do a simple lookup at another set of facts.

```
const lookupFacts = [
{ col1: '', col2: '', col3: ''},
{ col1: '', col2: '', col3: ''},
{ col1: '', col2: '', col3: ''}
]

const filterRule = {
conditions: {
all: [
{
path: "$.col1",
fact: "fact",
value: {
path: "$.col1",
fact: "lookup"
},
operator: "equal"
},
{
path: "$.col2",
fact: "data",
value: {
path: "$.col2",
fact: "lookup"
},
operator: "equal"
},
{
path: "$.col3",
fact: "data",
value: {
path: "$.col3",
fact: "lookup"
},
operator: "equal"
}
],
event: {
type: 'filter-event'
}
}
}

const engine = new require('json-rules-engine').Engine()

let filteredMatchs = await Promise.all(lookupFacts.map((lookup) => {
return engine.run({ lookup, data })
.then(({ events }) => events.length > 0 ? lookup : false)
.catch((err) => false)
}))
.then((values) => values.filter((value) => value))
```

In my case, the lookupfacts array seems to contain about 80000 entries and it takes around 30000 ms to complete. Whereas doing the same comparison using simple javascript code takes about 10-15 ms only.

I will only be not be having any dynamic data in the flow. Is there a way to improve performance?

Thanks

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。