Skip to content

Conversation

@luoluoyuyu
Copy link
Member

@luoluoyuyu luoluoyuyu commented Dec 1, 2025

Description

A comparison before and after optimization shows that the deserialization performance is improved by 4.5 times after optimization.
image

image

This PR has:

  • been self-reviewed.
    • concurrent read
    • concurrent write
    • concurrent read and write
  • added documentation for new or modified features or behaviors.
  • added Javadocs for most classes and all non-trivial methods.
  • added or updated version, license, or notice information
  • added comments explaining the "why" and the intent of the code wherever would not be obvious
    for an unfamiliar reader.
  • added unit tests or modified existing tests to cover new code paths, ensuring the threshold
    for code coverage.
  • added integration tests.
  • been tested in a test IoTDB cluster.

Key changed/added classes (or packages if there are too many classes) in this PR

@Caideyipi
Copy link
Collaborator

Can add some tests to prove that the time consumed is reduced

@luoluoyuyu
Copy link
Member Author

Can add some tests to prove that the time consumed is reduced

done

- Optimize times array copy: skip copy when lengths are equal, use System.arraycopy
- Add warning logs when times array is null or too small
- Ensure all arrays (values, times, bitMaps) are copied to rowSize length for immutability
- Filter out null columns when converting Statement to Tablet
- Rename idColumnIndices to tagColumnIndices
- Add skipString method to avoid constructing temporary objects
- Add comments explaining skipped fields in readMeasurement
- Use direct buffer position increment instead of reading bytes for skipping
- Ensure all column values are copied to ensure immutability
@jt2594838 jt2594838 merged commit 13b0582 into apache:master Dec 9, 2025
27 of 28 checks passed
@luoluoyuyu luoluoyuyu deleted the perf-pipe-receiver branch December 9, 2025 08:34
JackieTien97 pushed a commit that referenced this pull request Dec 10, 2025
…conversion to TableStatement. (#16844)

* Pipe: Modify the TableRawReq deserialization method to support direct conversion to TableStatement.

* fix

* fix

* fix

* fix

* fix

* update

* update

* update

* refactor: optimize TabletStatementConverter according to code review

- Optimize times array copy: skip copy when lengths are equal, use System.arraycopy
- Add warning logs when times array is null or too small
- Ensure all arrays (values, times, bitMaps) are copied to rowSize length for immutability
- Filter out null columns when converting Statement to Tablet
- Rename idColumnIndices to tagColumnIndices
- Add skipString method to avoid constructing temporary objects
- Add comments explaining skipped fields in readMeasurement
- Use direct buffer position increment instead of reading bytes for skipping
- Ensure all column values are copied to ensure immutability

* update

* update

(cherry picked from commit 13b0582)
JackieTien97 pushed a commit that referenced this pull request Dec 11, 2025
…conversion to TableStatement. (#16844)

* Pipe: Modify the TableRawReq deserialization method to support direct conversion to TableStatement.

* fix

* fix

* fix

* fix

* fix

* update

* update

* update

* refactor: optimize TabletStatementConverter according to code review

- Optimize times array copy: skip copy when lengths are equal, use System.arraycopy
- Add warning logs when times array is null or too small
- Ensure all arrays (values, times, bitMaps) are copied to rowSize length for immutability
- Filter out null columns when converting Statement to Tablet
- Rename idColumnIndices to tagColumnIndices
- Add skipString method to avoid constructing temporary objects
- Add comments explaining skipped fields in readMeasurement
- Use direct buffer position increment instead of reading bytes for skipping
- Ensure all column values are copied to ensure immutability

* update

* update

(cherry picked from commit 13b0582)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants