mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-07 01:28:27 +08:00
enhance: Optimize grow slice cost during query (#34253)
issue: #32252 This PR try to pre-allocate FieldData for Reduce operations in the Query chain using typeutil.PrepareResultFieldData to avoid the overhead of dynamically growing the slice during appendFieldData process. --------- Signed-off-by: Wei Liu <wei.liu@zilliz.com>
This commit is contained in:
parent
186757e622
commit
b49862d4f3
@ -603,7 +603,6 @@ func reduceRetrieveResults(ctx context.Context, retrieveResults []*internalpb.Re
|
|||||||
return ret, nil
|
return ret, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.FieldsData = make([]*schemapb.FieldData, len(validRetrieveResults[0].GetFieldsData()))
|
|
||||||
idSet := make(map[interface{}]struct{})
|
idSet := make(map[interface{}]struct{})
|
||||||
cursors := make([]int64, len(validRetrieveResults))
|
cursors := make([]int64, len(validRetrieveResults))
|
||||||
|
|
||||||
@ -626,6 +625,7 @@ func reduceRetrieveResults(ctx context.Context, retrieveResults []*internalpb.Re
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret.FieldsData = typeutil.PrepareResultFieldData(validRetrieveResults[0].GetFieldsData(), int64(loopEnd))
|
||||||
var retSize int64
|
var retSize int64
|
||||||
maxOutputSize := paramtable.Get().QuotaConfig.MaxOutputSize.GetAsInt64()
|
maxOutputSize := paramtable.Get().QuotaConfig.MaxOutputSize.GetAsInt64()
|
||||||
for j := 0; j < loopEnd; {
|
for j := 0; j < loopEnd; {
|
||||||
|
|||||||
@ -427,7 +427,7 @@ func MergeInternalRetrieveResult(ctx context.Context, retrieveResults []*interna
|
|||||||
loopEnd = int(param.limit)
|
loopEnd = int(param.limit)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.FieldsData = make([]*schemapb.FieldData, len(validRetrieveResults[0].Result.GetFieldsData()))
|
ret.FieldsData = typeutil.PrepareResultFieldData(validRetrieveResults[0].Result.GetFieldsData(), int64(loopEnd))
|
||||||
idTsMap := make(map[interface{}]int64)
|
idTsMap := make(map[interface{}]int64)
|
||||||
cursors := make([]int64, len(validRetrieveResults))
|
cursors := make([]int64, len(validRetrieveResults))
|
||||||
|
|
||||||
@ -556,6 +556,7 @@ func MergeSegcoreRetrieveResults(ctx context.Context, retrieveResults []*segcore
|
|||||||
limit = int(param.limit)
|
limit = int(param.limit)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret.FieldsData = typeutil.PrepareResultFieldData(validRetrieveResults[0].Result.GetFieldsData(), int64(loopEnd))
|
||||||
cursors := make([]int64, len(validRetrieveResults))
|
cursors := make([]int64, len(validRetrieveResults))
|
||||||
idTsMap := make(map[any]int64)
|
idTsMap := make(map[any]int64)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user