forked from TrueCloudLab/frostfs-sdk-go
[#19] transformer: Do not reuse memory of sent objects
Slower, but more correct. ``` name old time/op new time/op delta Transformer/small-8 72.4µs ± 8% 74.8µs ±11% ~ (p=0.278 n=9+10) Transformer/big-8 1.31s ± 8% 1.38s ±11% +5.50% (p=0.035 n=10+10) name old alloc/op new alloc/op delta Transformer/small-8 7.39kB ± 0% 7.69kB ± 0% +4.04% (p=0.000 n=10+10) Transformer/big-8 46.9kB ± 0% 49.2kB ± 0% +4.87% (p=0.000 n=10+10) name old allocs/op new allocs/op delta Transformer/small-8 94.6 ± 1% 102.0 ± 0% +7.82% (p=0.000 n=10+9) Transformer/big-8 560 ± 0% 620 ± 1% +10.66% (p=0.000 n=10+10) ``` Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
611e20587b
commit
e45647de3c
3 changed files with 56 additions and 61 deletions
|
@ -182,12 +182,7 @@ func (tt *testTarget) Write(p []byte) (n int, err error) {
|
|||
|
||||
func (tt *testTarget) Close() (*AccessIdentifiers, error) {
|
||||
tt.current.SetPayload(tt.payload)
|
||||
// We need to marshal, because current implementation reuses written object.
|
||||
data, _ := tt.current.Marshal()
|
||||
obj := objectSDK.New()
|
||||
_ = obj.Unmarshal(data)
|
||||
|
||||
tt.objects = append(tt.objects, obj)
|
||||
tt.objects = append(tt.objects, tt.current)
|
||||
tt.current = nil
|
||||
tt.payload = nil
|
||||
return nil, nil // AccessIdentifiers should not be used.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue