8c44d74463
### What changes were proposed in this pull request? Add benchmarks for interval constructor `make_interval` and measure perf of 4 cases: 1. Constant (year, month) 2. Constant (week, day) 3. Constant (hour, minute, second, second fraction) 4. All fields are NOT constant. The benchmark results are generated in the environment: | Item | Description | | ---- | ----| | Region | us-west-2 (Oregon) | | Instance | r3.xlarge | | AMI | ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20190722.1 (ami-06f2f779464715dc5) | | Java | OpenJDK 64-Bit Server VM 1.8.0_252 and OpenJDK 64-Bit Server VM 11.0.7+10 | ### Why are the changes needed? To have a base line for future perf improvements of `make_interval`, and to prevent perf regressions in the future. ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? By running `IntervalBenchmark` via: ``` $ SPARK_GENERATE_BENCHMARK_FILES=1 build/sbt "sql/test:runMain org.apache.spark.sql.execution.benchmark.IntervalBenchmark" ``` Closes #28905 from MaxGekk/benchmark-make_interval. Authored-by: Max Gekk <max.gekk@gmail.com> Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
41 lines
4.3 KiB
Plaintext
41 lines
4.3 KiB
Plaintext
OpenJDK 64-Bit Server VM 11.0.7+10-post-Ubuntu-2ubuntu218.04 on Linux 4.15.0-1063-aws
|
|
Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
|
|
cast strings to intervals: Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
|
|
------------------------------------------------------------------------------------------------------------------------
|
|
prepare string w/ interval 708 829 110 1.4 708.0 1.0X
|
|
prepare string w/o interval 660 672 14 1.5 660.3 1.1X
|
|
1 units w/ interval 514 543 33 1.9 514.2 1.4X
|
|
1 units w/o interval 476 492 20 2.1 475.9 1.5X
|
|
2 units w/ interval 751 767 14 1.3 751.0 0.9X
|
|
2 units w/o interval 709 716 11 1.4 709.0 1.0X
|
|
3 units w/ interval 1541 1551 15 0.6 1540.9 0.5X
|
|
3 units w/o interval 1531 1532 1 0.7 1531.5 0.5X
|
|
4 units w/ interval 1764 1768 5 0.6 1763.5 0.4X
|
|
4 units w/o interval 1737 1745 8 0.6 1736.6 0.4X
|
|
5 units w/ interval 1920 1930 10 0.5 1919.7 0.4X
|
|
5 units w/o interval 1928 1936 11 0.5 1927.9 0.4X
|
|
6 units w/ interval 2124 2127 4 0.5 2124.2 0.3X
|
|
6 units w/o interval 2124 2125 1 0.5 2123.7 0.3X
|
|
7 units w/ interval 2525 2541 15 0.4 2525.5 0.3X
|
|
7 units w/o interval 2512 2518 11 0.4 2511.5 0.3X
|
|
8 units w/ interval 2578 2597 19 0.4 2578.1 0.3X
|
|
8 units w/o interval 2558 2562 6 0.4 2558.1 0.3X
|
|
9 units w/ interval 2742 2750 9 0.4 2741.8 0.3X
|
|
9 units w/o interval 2752 2762 11 0.4 2751.8 0.3X
|
|
10 units w/ interval 3112 3123 10 0.3 3111.9 0.2X
|
|
10 units w/o interval 3116 3130 14 0.3 3115.7 0.2X
|
|
11 units w/ interval 3255 3273 20 0.3 3255.3 0.2X
|
|
11 units w/o interval 3294 3305 14 0.3 3293.6 0.2X
|
|
|
|
OpenJDK 64-Bit Server VM 11.0.7+10-post-Ubuntu-2ubuntu218.04 on Linux 4.15.0-1063-aws
|
|
Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
|
|
make_interval(): Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
|
|
--------------------------------------------------------------------------------------------------------------------------
|
|
prepare make_interval() 3395 3410 16 0.3 3395.0 1.0X
|
|
make_interval(0, 1, 2, 3, 4, 5, 50.123456) 94 102 9 10.7 93.8 36.2X
|
|
make_interval(*, *, 2, 3, 4, 5, 50.123456) 136 139 4 7.3 136.5 24.9X
|
|
make_interval(0, 1, *, *, 4, 5, 50.123456) 115 119 4 8.7 114.8 29.6X
|
|
make_interval(0, 1, 2, 3, *, *, *) 3359 3382 37 0.3 3358.7 1.0X
|
|
make_interval(*, *, *, *, *, *, *) 3382 3388 9 0.3 3382.3 1.0X
|
|
|