You've already forked json-iterator
							
							
				mirror of
				https://github.com/json-iterator/go.git
				synced 2025-10-31 00:07:40 +02:00 
			
		
		
		
	Reduce allocations in sortKeysMapEncoder
Use one buffer for all values.
This commit is contained in:
		| @@ -293,13 +293,13 @@ func (encoder *sortKeysMapEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { | ||||
| 	subIter := stream.cfg.BorrowIterator(nil) | ||||
| 	keyValues := encodedKeyValues{} | ||||
| 	for mapIter.HasNext() { | ||||
| 		subStream.buf = make([]byte, 0, 64) | ||||
| 		key, elem := mapIter.UnsafeNext() | ||||
| 		subStreamIndex := subStream.Buffered() | ||||
| 		encoder.keyEncoder.Encode(key, subStream) | ||||
| 		if subStream.Error != nil && subStream.Error != io.EOF && stream.Error == nil { | ||||
| 			stream.Error = subStream.Error | ||||
| 		} | ||||
| 		encodedKey := subStream.Buffer() | ||||
| 		encodedKey := subStream.Buffer()[subStreamIndex:] | ||||
| 		subIter.ResetBytes(encodedKey) | ||||
| 		decodedKey := subIter.ReadString() | ||||
| 		if stream.indention > 0 { | ||||
| @@ -310,7 +310,7 @@ func (encoder *sortKeysMapEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { | ||||
| 		encoder.elemEncoder.Encode(elem, subStream) | ||||
| 		keyValues = append(keyValues, encodedKV{ | ||||
| 			key:      decodedKey, | ||||
| 			keyValue: subStream.Buffer(), | ||||
| 			keyValue: subStream.Buffer()[subStreamIndex:], | ||||
| 		}) | ||||
| 	} | ||||
| 	sort.Sort(keyValues) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user