Slow performance while having large array of facts.
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 42/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- javascript
- Bereich
- backend, performance
Rechercherichtung
Keine Repository-Datei oder kein Test ist angegeben. Beginne damit, den bereitgestellten Benchmark rund um Engine.run mit 80.000 Einträgen zu reproduzieren und ihn mit der einfachen JavaScript-Suche zu vergleichen; abgeschlossen sein sollte die Arbeit mit einer gemessenen, umsetzbaren Leistungsverbesserung oder einer klar dokumentierten Einschränkung.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
- Vorherrschende Sprache
- JavaScript
- Sterne
- 3.1k
- Forks
- 507
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus CacheControl/json-rules-engine
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
CacheControl/json-rules-engine#427 · 1 Reaktion ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 48/100
CacheControl/json-rules-engine#424 · 1 Kommentar ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 25/100
CacheControl/json-rules-engine#421 · 1 Kommentar ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 38/100
CacheControl/json-rules-engine#417 · 1 Reaktion ·
Alle Issues in CacheControl/json-rules-engine
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
HarperFast/skills#96 ·
-
[Block] Latest Posts [Type] Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
Daemon passes --experimental-wasm-jspi unconditionally on Node >= 24; Node 26 rejects the flag Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Automattic/studio#4908 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
sugarlabs/musicblocks#8847 ·