|
|
@@ -60,8 +60,11 @@ var ConfigFastest = Config{
|
|
|
|
|
|
// Froze forge API from config
|
|
|
func (cfg Config) Froze() API {
|
|
|
- // TODO: cache frozen config
|
|
|
- frozenConfig := &frozenConfig{
|
|
|
+ api := getFrozenConfigFromCache(cfg)
|
|
|
+ if api != nil {
|
|
|
+ return api
|
|
|
+ }
|
|
|
+ api = &frozenConfig{
|
|
|
sortMapKeys: cfg.SortMapKeys,
|
|
|
indentionStep: cfg.IndentionStep,
|
|
|
objectFieldMustBeSimpleString: cfg.ObjectFieldMustBeSimpleString,
|
|
|
@@ -69,21 +72,22 @@ func (cfg Config) Froze() API {
|
|
|
streamPool: make(chan *Stream, 16),
|
|
|
iteratorPool: make(chan *Iterator, 16),
|
|
|
}
|
|
|
- frozenConfig.initCache()
|
|
|
+ api.initCache()
|
|
|
if cfg.MarshalFloatWith6Digits {
|
|
|
- frozenConfig.marshalFloatWith6Digits()
|
|
|
+ api.marshalFloatWith6Digits()
|
|
|
}
|
|
|
if cfg.EscapeHTML {
|
|
|
- frozenConfig.escapeHTML()
|
|
|
+ api.escapeHTML()
|
|
|
}
|
|
|
if cfg.UseNumber {
|
|
|
- frozenConfig.useNumber()
|
|
|
+ api.useNumber()
|
|
|
}
|
|
|
if cfg.ValidateJsonRawMessage {
|
|
|
- frozenConfig.validateJsonRawMessage()
|
|
|
+ api.validateJsonRawMessage()
|
|
|
}
|
|
|
- frozenConfig.configBeforeFrozen = cfg
|
|
|
- return frozenConfig
|
|
|
+ api.configBeforeFrozen = cfg
|
|
|
+ addFrozenConfigToCache(cfg, api)
|
|
|
+ return api
|
|
|
}
|
|
|
|
|
|
func (cfg *frozenConfig) validateJsonRawMessage() {
|