Переглянути джерело

Give the size of ArrayList
Give the size of ArrayList to avoid expansion and memory waste

dwq 5 роки тому
батько
коміт
dacb149850
1 змінених файлів з 6 додано та 6 видалено
  1. 6 6
      src/main/java/io/milvus/client/MilvusGrpcClient.java

+ 6 - 6
src/main/java/io/milvus/client/MilvusGrpcClient.java

@@ -1002,8 +1002,8 @@ public class MilvusGrpcClient implements MilvusClient {
 
 
         logInfo("getEntityByID in collection `{}` returned successfully!", collectionName);
         logInfo("getEntityByID in collection `{}` returned successfully!", collectionName);
 
 
-        List<List<Float>> floatVectors = new ArrayList<>();
-        List<ByteBuffer> binaryVectors = new ArrayList<>();
+        List<List<Float>> floatVectors = new ArrayList<>(ids.size());
+        List<ByteBuffer> binaryVectors = new ArrayList<>(ids.size());
         for (int i = 0; i < ids.size(); i++) {
         for (int i = 0; i < ids.size(); i++) {
           floatVectors.add(response.getVectorsData(i).getFloatDataList());
           floatVectors.add(response.getVectorsData(i).getFloatDataList());
           binaryVectors.add(response.getVectorsData(i).getBinaryData().asReadOnlyByteBuffer());
           binaryVectors.add(response.getVectorsData(i).getBinaryData().asReadOnlyByteBuffer());
@@ -1267,9 +1267,9 @@ public class MilvusGrpcClient implements MilvusClient {
 
 
   private List<RowRecord> buildRowRecordList(
   private List<RowRecord> buildRowRecordList(
       @Nonnull List<List<Float>> floatVectors, @Nonnull List<ByteBuffer> binaryVectors) {
       @Nonnull List<List<Float>> floatVectors, @Nonnull List<ByteBuffer> binaryVectors) {
-    List<RowRecord> rowRecordList = new ArrayList<>();
-
     int largerSize = Math.max(floatVectors.size(), binaryVectors.size());
     int largerSize = Math.max(floatVectors.size(), binaryVectors.size());
+    
+    List<RowRecord> rowRecordList = new ArrayList<>(largerSize); 
 
 
     for (int i = 0; i < largerSize; ++i) {
     for (int i = 0; i < largerSize; ++i) {
 
 
@@ -1298,8 +1298,8 @@ public class MilvusGrpcClient implements MilvusClient {
             : topKQueryResult.getIdsCount()
             : topKQueryResult.getIdsCount()
                 / numQueries; // Guaranteed to be divisible from server side
                 / numQueries; // Guaranteed to be divisible from server side
 
 
-    List<List<Long>> resultIdsList = new ArrayList<>();
-    List<List<Float>> resultDistancesList = new ArrayList<>();
+    List<List<Long>> resultIdsList = new ArrayList<>(numQueries);
+    List<List<Float>> resultDistancesList = new ArrayList<>(numQueries);
 
 
     if (topK > 0) {
     if (topK > 0) {
       for (int i = 0; i < numQueries; i++) {
       for (int i = 0; i < numQueries; i++) {