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();