#404·bigcache

is it possible to provide an 'unsafe' way to get internal []byte and avoid mem copy?

Author: codingWhatCreated Nov 4, 2024Updated Nov 29, 2024
Labelsenhancement

What is the issue you are having?

In some scenarios, the data retrieved from the cache will not be modified and could be directly returned.

What is BigCache doing that it shouldn't?

go
func readEntry(data []byte) []byte {
	length := binary.LittleEndian.Uint16(data[timestampSizeInBytes+hashSizeInBytes:])

	// copy on read
	dst := make([]byte, len(data)-int(headersSizeInBytes+length))
	copy(dst, data[headersSizeInBytes+length:])

	return dst
}

to be --- to recycle the 'dst'

go
func readEntry(dst, data []byte) []byte {
	length := binary.LittleEndian.Uint16(data[timestampSizeInBytes+hashSizeInBytes:])

	copy(dst, data[headersSizeInBytes+length:])

	return dst
}