Skip to content

Commit 2b5f7ff

Browse files
committed
Add benchmark for SortedRangeSet's getOrderedRanges
1 parent fbd1de0 commit 2b5f7ff

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

core/trino-spi/src/test/java/io/trino/spi/predicate/BenchmarkSortedRangeSet.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,36 @@ private List<SortedRangeSet> benchmarkComplement(List<SortedRangeSet> dataRanges
169169
return result;
170170
}
171171

172+
@Benchmark
173+
public List<Integer> getOrderedRangesSmall(Data data)
174+
{
175+
return benchmarkGetOrderedRanges(data.smallRanges);
176+
}
177+
178+
@Benchmark
179+
public List<Integer> getOrderedRangesLarge(Data data)
180+
{
181+
return benchmarkGetOrderedRanges(data.largeRanges);
182+
}
183+
184+
private List<Integer> benchmarkGetOrderedRanges(List<SortedRangeSet> dataRanges)
185+
{
186+
List<Integer> result = new ArrayList<>(dataRanges.size());
187+
for (int index = 0; index < dataRanges.size(); index++) {
188+
int hash = 0;
189+
for (Range orderedRange : dataRanges.get(index).getRanges().getOrderedRanges()) {
190+
if (orderedRange.getLow().getValueBlock().isPresent()) {
191+
hash = hash * 31 + orderedRange.getLow().getValue().hashCode();
192+
}
193+
if (orderedRange.getHigh().getValueBlock().isPresent()) {
194+
hash = hash * 31 + orderedRange.getHigh().getValue().hashCode();
195+
}
196+
}
197+
result.add(hash);
198+
}
199+
return result;
200+
}
201+
172202
@State(Scope.Thread)
173203
public static class Data
174204
{

0 commit comments

Comments
 (0)