Skip to content
This repository has been archived by the owner on Nov 9, 2021. It is now read-only.

Don't parse/stringify default configs every time (Performance improvement) #382

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

alexsherman
Copy link

I noticed old issues about performance concerns, and in profiling my own application, I also observed significant time spent within squel, particularly when creating lots of queries. While there are a few places that are unoptimized (all of the Object.getOwnPropertyNames can really bog stuff down), the biggest culprit that I personally noticed was using JSON.parse and JSON.stringify to clone the configs in the base builder constructor. This was taking much longer than actually fetching my queries from the database/cache. So, in this PR, I've refactored the default options to be a function returning an object instead of an object, and the dialect-specific classes override this with the appropriate options.

Stylistically, it's definitely a bit uglier than just having an option, but I've found it to be a >2x speedup, so it's worth it to me. Feel free to suggest other ways of eliminating the costly parsing and stringification as well.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant