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.
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.