Decreased Performance due to 'debug(...)' statements in production
Gi-jutsu opened this issue ยท 2 comments
Hi @CacheControl
Hope your doing well ๐
First I'd like to thank you for the work done, this is a really useful package !
I'd like to point out a performance issue we are facing in production, there's a debug statement that is run while the addFact function is executed which cause a 2 seconds delay
addFact (id, valueOrMethod, options) {
let factId = id
let fact
if (id instanceof Fact) {
factId = id.id
fact = id
} else {
fact = new Fact(id, valueOrMethod, options)
}
debug(`engine::addFact id:${factId}`) // <--- This one
this.facts.set(factId, fact)
return this
}Here's our CPU Profiling
Is there a way to disable the debug statements ? Otherwise it could be nice to add an option to disable them
Thanks !
If you would like, I would be glad to open a PR to address the following issue.
Have a nice day ๐
HI @Gi-jutsu Thanks for raising the issue.
The current code in the debug function checks environment variables or local storage to enable debug statements here Could you confirm if you have debugging enabled and what environment you're running and profiling your code in.
If the issue is the time it takes to check if the debugging statements should be enabled there are likely some optimizations that could be made to speed up the runtime of the debugging statements.
Hello ๐
Thanks for your response,
I don't think debugging is enabled
We didn't set the DEBUG key in our environments ( perhaps GCP is adding it afterwards I'm not sure about that )
I'm running a NestJS application in GCP Compute Engine through a Compute Instange Group ( Dockerized )
For the Profiling I'm using Google Cloud Profiler ( see: https://www.npmjs.com/package/@google-cloud/profiler )