lib / pq

Pure Go Postgres driver for database/sql
https://pkg.go.dev/github.com/lib/pq
MIT License
9.01k stars 910 forks source link

url: reduce allocations in ParseURL #935

Open kevinburke1 opened 4 years ago

kevinburke1 commented 4 years ago

If you use e.g. "postgres://" as the connection string, ParseURL will be called and the result will be computed each time a connection is established to the database. This can be expensive because a new strings.Replacer is created each time ParseURL is called. It's also unnecessary because the output can be computed by the input and for most processes only a single input will ever exist for the lifetime of the process.

Reuse the same *Replacer across calls, and also cache the first 100 unique results from ParseURL, to speed up the second and third calls.

kevinburke1 commented 4 years ago

Tested this locally, it's working fine.