Jackie-Jiang opened a new pull request, #8722:
URL: https://github.com/apache/pinot/pull/8722

   Borrow the same idea as in #8703, we can reflect the inclusiveness of the 
value bound through the comparison value to avoid extra per value if check. 
Also, if the lower bound comparison already fails, we may short-circuit the 
comparison for the upper bound.
   
   Here are the benchmark result, each operation applies 30K values:
   Before the change:
   ```
   Benchmark                              Mode  Cnt    Score     Error  Units
   BenchmarkRangeApplySV.doubleEvaluator  avgt    5   96.914 ±   5.245  us/op
   BenchmarkRangeApplySV.floatEvaluator   avgt    5   98.179 ±   7.607  us/op
   BenchmarkRangeApplySV.intEvaluator     avgt    5  111.091 ±   1.061  us/op
   BenchmarkRangeApplySV.longEvaluator    avgt    5   95.441 ±   2.418  us/op
   BenchmarkRangeApplySV.stringEvaluator  avgt    5  467.129 ±  89.302  us/op
   ```
   After the change:
   ```
   Benchmark                              Mode  Cnt    Score     Error  Units
   BenchmarkRangeApplySV.doubleEvaluator  avgt    5   68.947 ±   1.562  us/op
   BenchmarkRangeApplySV.floatEvaluator   avgt    5   78.496 ±   5.309  us/op
   BenchmarkRangeApplySV.intEvaluator     avgt    5   66.792 ±   5.647  us/op
   BenchmarkRangeApplySV.longEvaluator    avgt    5   67.519 ±   6.929  us/op
   BenchmarkRangeApplySV.stringEvaluator  avgt    5  423.882 ± 135.095  us/op
   ```
   Benchmark class:
   ```
   @BenchmarkMode(Mode.AverageTime)
   @OutputTimeUnit(TimeUnit.MICROSECONDS)
   @Fork(1)
   @Warmup(iterations = 3, time = 10)
   @Measurement(iterations = 5, time = 10)
   @State(Scope.Benchmark)
   public class BenchmarkRangeApplySV {
     BaseRawValueBasedPredicateEvaluator _intEvaluator;
     BaseRawValueBasedPredicateEvaluator _longEvaluator;
     BaseRawValueBasedPredicateEvaluator _floatEvaluator;
     BaseRawValueBasedPredicateEvaluator _doubleEvaluator;
     BaseRawValueBasedPredicateEvaluator _stringEvaluator;
   
     @Setup
     public void setUp()
         throws Exception {
       RangePredicate rangePredicate = new RangePredicate(null, true, "10000", 
false, "20000");
       _intEvaluator = 
RangePredicateEvaluatorFactory.newRawValueBasedEvaluator(rangePredicate, 
FieldSpec.DataType.INT);
       _longEvaluator = 
RangePredicateEvaluatorFactory.newRawValueBasedEvaluator(rangePredicate, 
FieldSpec.DataType.LONG);
       _floatEvaluator =
           
RangePredicateEvaluatorFactory.newRawValueBasedEvaluator(rangePredicate, 
FieldSpec.DataType.FLOAT);
       _doubleEvaluator =
           
RangePredicateEvaluatorFactory.newRawValueBasedEvaluator(rangePredicate, 
FieldSpec.DataType.DOUBLE);
       _stringEvaluator =
           
RangePredicateEvaluatorFactory.newRawValueBasedEvaluator(rangePredicate, 
FieldSpec.DataType.STRING);
     }
   
     @Benchmark
     public void intEvaluator(Blackhole bh) {
       for (int i = 0; i < 30000; i++) {
         bh.consume(_intEvaluator.applySV(i));
       }
     }
   
     @Benchmark
     public void longEvaluator(Blackhole bh) {
       for (int i = 0; i < 30000; i++) {
         bh.consume(_longEvaluator.applySV((long) i));
       }
     }
   
     @Benchmark
     public void floatEvaluator(Blackhole bh) {
       for (int i = 0; i < 30000; i++) {
         bh.consume(_floatEvaluator.applySV((float) i));
       }
     }
   
     @Benchmark
     public void doubleEvaluator(Blackhole bh) {
       for (int i = 0; i < 30000; i++) {
         bh.consume(_doubleEvaluator.applySV((double) i));
       }
     }
   
     @Benchmark
     public void stringEvaluator(Blackhole bh) {
       for (int i = 0; i < 30000; i++) {
         bh.consume(_stringEvaluator.applySV(Integer.toString(i)));
       }
     }
   }
   ```


-- 
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-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to