Caideyipi commented on PR #18240:
URL: https://github.com/apache/iotdb/pull/18240#issuecomment-5011305788
Added opt-in, default-off manual performance tests in \`4a15830381f\`.
The switches are:
- \`-Diotdb.last.cache.write.perf.enabled=true\`
- \`-Diotdb.pipe.insert.node.memory.estimator.reuse.perf.enabled=true\`
Both tests alternate legacy/optimized order, warm up first, and report the
median of 5 rounds. CPU is current-thread CPU time, allocation is
current-thread allocated bytes, and peak heap is the summed heap-pool peak
delta from the post-GC baseline for each round. There are no performance
assertions, so the tests stay non-flaky and are skipped unless explicitly
enabled.
Environment: Windows, Oracle HotSpot 17.0.15.
| Benchmark | Path | CPU (us/op) | Allocated (bytes/op) | Peak heap delta
(MiB/round) |
|---|---|---:|---:|---:|
| Last cache: 1,000 measurements, 100 initialized | legacy eager array |
17.969 | 52,016 | 168.053 |
| | optimized lazy source | 9.375 | 4,800 | 52.008 |
| | change | **1.92x faster** | **90.8% lower** | **69.1% lower** |
| InsertRows estimator: 10 rows x 500 measurements | legacy fresh identity
set | 20.313 | 18,728 | 168.012 |
| | optimized reused identity set | 18.750 | 2,392 | 44.000 |
| | change | **1.08x faster** | **87.2% lower** | **73.8% lower** |
Default settings for both comparisons are 1,000 warmups, 20,000 operations
per measured round, and 5 rounds.
Reproduce on a clean checkout:
\`\`\`bash
mvn -pl iotdb-core/datanode \
-Dtest=TableDeviceLastCachePerformanceTest \
-Diotdb.last.cache.write.perf.enabled=true test
mvn -pl iotdb-core/datanode \
-Dtest=InsertNodeMemoryEstimatorPerformanceTest#compositeInsertRowsReusableSetBenchmark
\
-Diotdb.pipe.insert.node.memory.estimator.reuse.perf.enabled=true test
\`\`\`
Validation completed:
- Spotless: passed
- Checkstyle: passed
- Default-off behavior: 3 tests run, 3 skipped, build passed
- The touched production/test sources compile against the Maven-resolved
test classpath
The full DataNode lifecycle compile in this local checkout remains blocked
before test compilation by stale cross-module/generated artifacts
(\`PipeConfig\` getters and fence-threshold Thrift methods), unrelated to this
patch. I therefore collected the numbers by invoking the compiled JUnit classes
directly with the same Maven-resolved classpath.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]