internal/pipewire: preallocate for known size
All checks were successful
Test / Create distribution (push) Successful in 37s
Test / Sandbox (push) Successful in 2m23s
Test / Hakurei (push) Successful in 3m19s
Test / Hpkg (push) Successful in 4m13s
Test / Sandbox (race detector) (push) Successful in 4m27s
Test / Hakurei (race detector) (push) Successful in 5m10s
Test / Flake checks (push) Successful in 1m27s
All checks were successful
Test / Create distribution (push) Successful in 37s
Test / Sandbox (push) Successful in 2m23s
Test / Hakurei (push) Successful in 3m19s
Test / Hpkg (push) Successful in 4m13s
Test / Sandbox (race detector) (push) Successful in 4m27s
Test / Hakurei (race detector) (push) Successful in 5m10s
Test / Flake checks (push) Successful in 1m27s
This is still not efficient by any means, but it should eliminate most non-reflect allocation (all allocation if PODMarshaler is not used). Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -125,7 +125,13 @@ type UnsupportedSizeError int
|
||||
func (e UnsupportedSizeError) Error() string { return "size out of range: " + strconv.Itoa(int(e)) }
|
||||
|
||||
// Marshal returns the PipeWire POD encoding of v.
|
||||
func Marshal(v any) ([]byte, error) { return MarshalAppend(make([]byte, 0), v) }
|
||||
func Marshal(v any) ([]byte, error) {
|
||||
var data []byte
|
||||
if s, ok := v.(KnownSize); ok {
|
||||
data = make([]byte, 0, s.Size())
|
||||
}
|
||||
return MarshalAppend(data, v)
|
||||
}
|
||||
|
||||
// MarshalAppend appends the PipeWire POD encoding of v to data.
|
||||
func MarshalAppend(data []byte, v any) ([]byte, error) {
|
||||
|
||||
Reference in New Issue
Block a user