diff --git a/schema/tuples.go b/schema/tuples.go index 322a9aaceea2f6e860429a0af967326f7a490e0c..6077f089c84d91ca5041d88c5991699e388218a1 100644 --- a/schema/tuples.go +++ b/schema/tuples.go @@ -82,6 +82,10 @@ func RecordToTuples(record []byte) ([]Tuple, []TypeError, error) { return nil, nil, err } - tuples, unprocessed := flatten(m, "", nil, nil) + // Allocation optimization: assume the incoming record is + // flat-ish and preallocate a Tuple slice. + tupleBuf := make([]Tuple, 0, len(m)) + + tuples, unprocessed := flatten(m, "", tupleBuf, nil) return tuples, unprocessed, nil }