CacheControl / CacheControl/json-rules-engine

Slow performance while having large array of facts.

Đang mở
#324 10 bình luận 6 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
JavaScript
Star
3.1k
Fork
507
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.