Slow performance while having large array of facts.
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- javascript
- Área
- backend, performance
Línea de trabajo
No se especifica ningún archivo del repositorio ni ninguna prueba. Empieza reproduciendo el benchmark proporcionado en torno a Engine.run con 80.000 entradas y compáralo con la búsqueda simple de JavaScript; el trabajo debería darse por terminado con una mejora de rendimiento medible y aplicable, o con una limitación claramente documentada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- JavaScript
- Estrellas
- 3.1k
- Forks
- 507
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de CacheControl/json-rules-engine
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
CacheControl/json-rules-engine#427 · 1 reacción ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
CacheControl/json-rules-engine#424 · 1 comentario ·
-
How to handle array of objects? Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
CacheControl/json-rules-engine#421 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
CacheControl/json-rules-engine#417 · 1 reacción ·
Todos los issues de CacheControl/json-rules-engine
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
HarperFast/skills#96 ·
-
[Block] Latest Posts [Type] Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Daemon passes --experimental-wasm-jspi unconditionally on Node >= 24; Node 26 rejects the flag Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Automattic/studio#4908 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
sugarlabs/musicblocks#8847 ·