This is an automated email from the ASF dual-hosted git repository.

shuwenwei pushed a commit to branch object_type
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/object_type by this push:
     new 2a74c8be8f5 optimize CompressedTsFileModelProcessor (#16190)
2a74c8be8f5 is described below

commit 2a74c8be8f56361798b8551b65835180bba47429
Author: shuwenwei <[email protected]>
AuthorDate: Fri Aug 15 18:53:00 2025 +0800

    optimize CompressedTsFileModelProcessor (#16190)
---
 .../rpc/model/CompressedTsFileModelProcessor.java  | 25 +++++++++++-----------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/model/CompressedTsFileModelProcessor.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/model/CompressedTsFileModelProcessor.java
index 678d86cd07a..5f7f2a0a541 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/model/CompressedTsFileModelProcessor.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/model/CompressedTsFileModelProcessor.java
@@ -81,27 +81,26 @@ public class CompressedTsFileModelProcessor extends 
ModelProcessor {
                       .dataType(TSDataType.FLOAT)
                       .category(ColumnCategory.FIELD)
                       .build()));
+      int restSize = values.length;
+      int offset = 0;
       try (ITsFileWriter writer = new DeviceTableModelWriter(tsFileOutput, 
tableSchema, 1)) {
         Tablet tablet =
             new Tablet(
                 Collections.singletonList("v"),
                 Collections.singletonList(TSDataType.FLOAT),
                 DEFAULT_CHUNK_NUMBER);
-
-        for (int i = 0; i < values.length; i++) {
-          int row = tablet.getRowSize();
-          tablet.addTimestamp(row, i);
-          tablet.addValue(row, "v", values[i]);
-          // write
-          if (tablet.getRowSize() == tablet.getMaxRowNumber()) {
-            writer.write(tablet);
-            tablet.reset();
+        long[] tabletTimeArr = tablet.getTimestamps();
+        float[] tabletValueArr = (float[]) tablet.getValues()[0];
+        while (restSize > 0) {
+          int copyLength = Math.min(restSize, DEFAULT_CHUNK_NUMBER);
+          for (int i = 0; i < copyLength; i++) {
+            tabletTimeArr[i] = i + offset;
           }
-        }
-        // write
-        if (tablet.getRowSize() != 0) {
+          System.arraycopy(values, offset, tabletValueArr, 0, copyLength);
+          restSize -= copyLength;
+          offset += copyLength;
+          tablet.setRowSize(copyLength);
           writer.write(tablet);
-          tablet.reset();
         }
       }
       return tsFileOutput.getByteBuffer().array();

Reply via email to