You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by "jasonk000 (via GitHub)" <gi...@apache.org> on 2023/01/30 16:46:57 UTC
[GitHub] [druid] jasonk000 commented on a diff in pull request #12109: perf: indexing: improve DimensionDictionary index locking on add path
jasonk000 commented on code in PR #12109:
URL: https://github.com/apache/druid/pull/12109#discussion_r1090882727
##########
processing/src/main/java/org/apache/druid/segment/DimensionDictionary.java:
##########
@@ -47,102 +47,146 @@
private final Object2IntMap<T> valueToId = new Object2IntOpenHashMap<>();
private final List<T> idToValue = new ArrayList<>();
- private final ReentrantReadWriteLock lock;
+ private final StampedLock lock;
public DimensionDictionary()
{
- this.lock = new ReentrantReadWriteLock();
+ this.lock = new StampedLock();
Review Comment:
I've tested this with a `synchronized` solution as well, [code is all here](https://github.com/apache/druid/compare/master...jasonk000:druid:dimension-dictionary-perf-synchronized).
In short, the results
```
ORGIINAL
Benchmark Mode Cnt Score Error Units
StringDimensionIndexerProcessBenchmark.parallelReadWrite avgt 10 30471.552 ± 456.716 us/op
StringDimensionIndexerProcessBenchmark.parallelReadWrite:parallelReader avgt 10 18069.863 ± 327.923 us/op
StringDimensionIndexerProcessBenchmark.parallelReadWrite:parallelWriter avgt 10 67676.617 ± 2351.311 us/op
StringDimensionIndexerProcessBenchmark.soloReader avgt 10 1048.079 ± 1.120 us/op
StringDimensionIndexerProcessBenchmark.soloWriter avgt 10 4629.769 ± 29.353 us/op
SYNCHRONIZED
Benchmark Mode Cnt Score Error Units
StringDimensionIndexerProcessBenchmark.parallelReadWrite avgt 10 93569.747 ± 16945.579 us/op
StringDimensionIndexerProcessBenchmark.parallelReadWrite:parallelReader avgt 10 16777.455 ± 1096.868 us/op
StringDimensionIndexerProcessBenchmark.parallelReadWrite:parallelWriter avgt 10 323946.622 ± 70083.402 us/op
StringDimensionIndexerProcessBenchmark.soloReader avgt 10 198.478 ± 1.093 us/op
StringDimensionIndexerProcessBenchmark.soloWriter avgt 10 2513.408 ± 3.333 us/op
STAMPED LOCK #13710
Benchmark Mode Cnt Score Error Units
StringDimensionIndexerProcessBenchmark.parallelReadWrite avgt 10 2914.859 ± 22.519 us/op
StringDimensionIndexerProcessBenchmark.parallelReadWrite:parallelReader avgt 10 508.010 ± 14.675 us/op
StringDimensionIndexerProcessBenchmark.parallelReadWrite:parallelWriter avgt 10 10135.408 ± 82.745 us/op
StringDimensionIndexerProcessBenchmark.soloReader avgt 10 205.415 ± 0.158 us/op
StringDimensionIndexerProcessBenchmark.soloWriter avgt 10 3098.743 ± 23.603 us/op
--
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: commits-unsubscribe@druid.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org