validator icon indicating copy to clipboard operation
validator copied to clipboard

Lazily initialize regexes to speed up `init()`

Open kylecarbs opened this issue 1 year ago • 4 comments

Using GODEBUG=inittrace=1 I found a relatively constant 10ms init caused by this function.

@go-playground/validator-maintainers

kylecarbs avatar Apr 01 '24 20:04 kylecarbs

Coverage Status

coverage: 74.228% (+0.02%) from 74.208% when pulling cebbc77c0ece34053127ee5adcafd819343143a0 on kylecarbs:master into a0f74b0fb2a7ae1750c0f0b0a49550d8b6e2e708 on go-playground:master.

coveralls avatar Apr 01 '24 20:04 coveralls

@kylecarbs out of curiosity, what is your use case where 10ms is not tolerable?

deankarn avatar Apr 30 '24 04:04 deankarn

@deankarn this package is imported in our CLI. Adding that overhead to every invocation (even help) isn't great.

kylecarbs avatar Apr 30 '24 04:04 kylecarbs

@deankarn any changes needed for me to push this through?

kylecarbs avatar May 13 '24 15:05 kylecarbs

@kylecarbs sorry for the lateness of my reply, been busy.

My only concern is the sync.Mutex overhead for longer running applications, can you change the implementation to use sync.Once instead which uses lower level atomics?

deankarn avatar Jun 01 '24 15:06 deankarn

@deankarn good idea. Will change in a bit!

kylecarbs avatar Jun 01 '24 15:06 kylecarbs

I will check back later tonight/tomorrow :)

deankarn avatar Jun 01 '24 15:06 deankarn