Reuse buffers when writing metadata (#13040)

Simplify returning buffers.

Tested using `warp mixed --duration=1m --obj.size=100K`:

```
Operation: DELETE
Operations: 7148 -> 7642
* Average: +6.77% (+8.1) obj/s
-------------------
Operation: GET
Operations: 32200 -> 34403
* Average: +6.74% (+3.5 MiB/s) throughput, +6.74% (+36.2) obj/s
* First Byte: Average: -105.403µs (-3%), Median: -309µs (-11%), Best: -2.7µs (-0%), Worst: +3.5637ms (+3%)
-------------------
Operation: PUT
Operations: 10741 -> 11475
* Average: +6.78% (+1.2 MiB/s) throughput, +6.78% (+12.1) obj/s
-------------------
Operation: STAT
Operations: 21465 -> 22927
* Average: +6.71% (+24.0) obj/s
```
This commit is contained in:
Klaus Post
2021-08-23 20:17:27 +02:00
committed by GitHub
parent 8315bcd0d8
commit 1080609c86
4 changed files with 37 additions and 31 deletions

View File

@@ -497,9 +497,7 @@ func (m *metaCacheEntriesSorted) forwardTo(s string) {
})
if m.reuse {
for i, entry := range m.o[:idx] {
if len(entry.metadata) >= metaDataReadDefault && len(entry.metadata) < metaDataReadDefault*4 {
metaDataPool.Put(entry.metadata)
}
metaDataPoolPut(entry.metadata)
m.o[i].metadata = nil
}
}
@@ -517,9 +515,7 @@ func (m *metaCacheEntriesSorted) forwardPast(s string) {
})
if m.reuse {
for i, entry := range m.o[:idx] {
if len(entry.metadata) >= metaDataReadDefault && len(entry.metadata) < metaDataReadDefault*4 {
metaDataPool.Put(entry.metadata)
}
metaDataPoolPut(entry.metadata)
m.o[i].metadata = nil
}
}
@@ -739,9 +735,7 @@ func (m *metaCacheEntriesSorted) truncate(n int) {
if len(m.o) > n {
if m.reuse {
for i, entry := range m.o[n:] {
if len(entry.metadata) >= metaDataReadDefault && len(entry.metadata) < metaDataReadDefault*4 {
metaDataPool.Put(entry.metadata)
}
metaDataPoolPut(entry.metadata)
m.o[n+i].metadata = nil
}
}