Skip to content

Commit 045106e

Browse files
MaxGekkcloud-fan
authored andcommitted
[SPARK-32072][CORE][TESTS] Fix table formatting with benchmark results
### What changes were proposed in this pull request? Set column width w/ benchmark names to maximum of either 1. 40 (before this PR) or 2. The length of benchmark name or 3. Maximum length of cases names ### Why are the changes needed? To improve readability of benchmark results. For example, `MakeDateTimeBenchmark`. Before: ``` make_timestamp(): Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative ------------------------------------------------------------------------------------------------------------------------ prepare make_timestamp() 3636 3673 38 0.3 3635.7 1.0X make_timestamp(2019, 1, 2, 3, 4, 50.123456) 94 99 4 10.7 93.8 38.8X make_timestamp(2019, 1, 2, 3, 4, 60.000000) 68 80 13 14.6 68.3 53.2X make_timestamp(2019, 12, 31, 23, 59, 60.00) 65 79 19 15.3 65.3 55.7X make_timestamp(*, *, *, 3, 4, 50.123456) 271 280 14 3.7 270.7 13.4X ``` After: ``` make_timestamp(): Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative --------------------------------------------------------------------------------------------------------------------------- prepare make_timestamp() 3694 3745 82 0.3 3694.0 1.0X make_timestamp(2019, 1, 2, 3, 4, 50.123456) 82 90 9 12.2 82.3 44.9X make_timestamp(2019, 1, 2, 3, 4, 60.000000) 72 77 5 13.9 71.9 51.4X make_timestamp(2019, 12, 31, 23, 59, 60.00) 67 71 5 15.0 66.8 55.3X make_timestamp(*, *, *, 3, 4, 50.123456) 273 289 14 3.7 273.2 13.5X ``` ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? By re-generating benchmark results for `MakeDateTimeBenchmark`: ``` $ SPARK_GENERATE_BENCHMARK_FILES=1 build/sbt "sql/test:runMain org.apache.spark.sql.execution.benchmark.MakeDateTimeBenchmark" ``` 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 | Closes apache#28906 from MaxGekk/benchmark-table-formatting. Authored-by: Max Gekk <[email protected]> Signed-off-by: Wenchen Fan <[email protected]>
1 parent 986fa01 commit 045106e

File tree

3 files changed

+33
-32
lines changed

3 files changed

+33
-32
lines changed

core/src/test/scala/org/apache/spark/benchmark/Benchmark.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,12 @@ private[spark] class Benchmark(
112112
// The results are going to be processor specific so it is useful to include that.
113113
out.println(Benchmark.getJVMOSInfo())
114114
out.println(Benchmark.getProcessorName())
115-
out.printf("%-40s %14s %14s %11s %12s %13s %10s\n", name + ":", "Best Time(ms)", "Avg Time(ms)", "Stdev(ms)", "Rate(M/s)",
116-
"Per Row(ns)", "Relative")
117-
out.println("-" * 120)
115+
val nameLen = Math.max(40, Math.max(name.length, benchmarks.map(_.name.length).max))
116+
out.printf(s"%-${nameLen}s %14s %14s %11s %12s %13s %10s\n",
117+
name + ":", "Best Time(ms)", "Avg Time(ms)", "Stdev(ms)", "Rate(M/s)", "Per Row(ns)", "Relative")
118+
out.println("-" * (nameLen + 80))
118119
results.zip(benchmarks).foreach { case (result, benchmark) =>
119-
out.printf("%-40s %14s %14s %11s %12s %13s %10s\n",
120+
out.printf(s"%-${nameLen}s %14s %14s %11s %12s %13s %10s\n",
120121
benchmark.name,
121122
"%5.0f" format result.bestMs,
122123
"%4.0f" format result.avgMs,

sql/core/benchmarks/MakeDateTimeBenchmark-jdk11-results.txt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@ OpenJDK 64-Bit Server VM 11.0.7+10-post-Ubuntu-2ubuntu218.04 on Linux 4.15.0-106
22
Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
33
make_date(): Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
44
------------------------------------------------------------------------------------------------------------------------
5-
prepare make_date() 3170 3321 230 31.5 31.7 1.0X
6-
make_date(2019, 9, 16) 2359 2566 343 42.4 23.6 1.3X
7-
make_date(*, *, *) 4398 4455 53 22.7 44.0 0.7X
5+
prepare make_date() 3214 3344 209 31.1 32.1 1.0X
6+
make_date(2019, 9, 16) 2342 2348 6 42.7 23.4 1.4X
7+
make_date(*, *, *) 4485 4533 56 22.3 44.8 0.7X
88

99
OpenJDK 64-Bit Server VM 11.0.7+10-post-Ubuntu-2ubuntu218.04 on Linux 4.15.0-1063-aws
1010
Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
11-
make_timestamp(): Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
12-
------------------------------------------------------------------------------------------------------------------------
13-
prepare make_timestamp() 3492 3536 70 0.3 3491.7 1.0X
14-
make_timestamp(2019, 1, 2, 3, 4, 50.123456) 94 110 16 10.7 93.6 37.3X
15-
make_timestamp(2019, 1, 2, 3, 4, 60.000000) 78 83 8 12.8 78.0 44.7X
16-
make_timestamp(2019, 12, 31, 23, 59, 60.00) 66 72 6 15.1 66.2 52.7X
17-
make_timestamp(*, *, *, 3, 4, 50.123456) 306 313 12 3.3 305.9 11.4X
18-
make_timestamp(*, *, *, *, *, 0) 282 284 2 3.5 281.9 12.4X
19-
make_timestamp(*, *, *, *, *, 60.0) 281 288 6 3.6 281.0 12.4X
20-
make_timestamp(2019, 1, 2, *, *, *) 3637 3641 3 0.3 3636.7 1.0X
21-
make_timestamp(*, *, *, *, *, *) 3635 3648 12 0.3 3634.9 1.0X
11+
make_timestamp(): Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
12+
---------------------------------------------------------------------------------------------------------------------------
13+
prepare make_timestamp() 3744 3775 35 0.3 3744.1 1.0X
14+
make_timestamp(2019, 1, 2, 3, 4, 50.123456) 82 91 9 12.2 82.3 45.5X
15+
make_timestamp(2019, 1, 2, 3, 4, 60.000000) 81 89 7 12.4 81.0 46.2X
16+
make_timestamp(2019, 12, 31, 23, 59, 60.00) 70 80 9 14.3 69.9 53.5X
17+
make_timestamp(*, *, *, 3, 4, 50.123456) 308 314 7 3.2 308.1 12.2X
18+
make_timestamp(*, *, *, *, *, 0) 302 316 14 3.3 301.9 12.4X
19+
make_timestamp(*, *, *, *, *, 60.0) 290 296 6 3.4 290.4 12.9X
20+
make_timestamp(2019, 1, 2, *, *, *) 3888 3902 15 0.3 3888.1 1.0X
21+
make_timestamp(*, *, *, *, *, *) 3902 3908 8 0.3 3901.6 1.0X
2222

sql/core/benchmarks/MakeDateTimeBenchmark-results.txt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@ OpenJDK 64-Bit Server VM 1.8.0_252-8u252-b09-1~18.04-b09 on Linux 4.15.0-1063-aw
22
Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
33
make_date(): Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
44
------------------------------------------------------------------------------------------------------------------------
5-
prepare make_date() 2951 3182 355 33.9 29.5 1.0X
6-
make_date(2019, 9, 16) 2325 2415 101 43.0 23.2 1.3X
7-
make_date(*, *, *) 4556 4573 17 21.9 45.6 0.6X
5+
prepare make_date() 3309 3429 110 30.2 33.1 1.0X
6+
make_date(2019, 9, 16) 2336 2359 23 42.8 23.4 1.4X
7+
make_date(*, *, *) 4588 4618 27 21.8 45.9 0.7X
88

99
OpenJDK 64-Bit Server VM 1.8.0_252-8u252-b09-1~18.04-b09 on Linux 4.15.0-1063-aws
1010
Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
11-
make_timestamp(): Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
12-
------------------------------------------------------------------------------------------------------------------------
13-
prepare make_timestamp() 3677 3730 87 0.3 3677.0 1.0X
14-
make_timestamp(2019, 1, 2, 3, 4, 50.123456) 76 92 15 13.1 76.5 48.1X
15-
make_timestamp(2019, 1, 2, 3, 4, 60.000000) 70 72 3 14.4 69.7 52.8X
16-
make_timestamp(2019, 12, 31, 23, 59, 60.00) 68 75 12 14.7 68.0 54.1X
17-
make_timestamp(*, *, *, 3, 4, 50.123456) 266 277 12 3.8 265.8 13.8X
18-
make_timestamp(*, *, *, *, *, 0) 258 286 46 3.9 258.3 14.2X
19-
make_timestamp(*, *, *, *, *, 60.0) 261 269 11 3.8 260.7 14.1X
20-
make_timestamp(2019, 1, 2, *, *, *) 3748 3762 22 0.3 3748.3 1.0X
21-
make_timestamp(*, *, *, *, *, *) 3761 3762 2 0.3 3760.9 1.0X
11+
make_timestamp(): Best Time(ms) Avg Time(ms) Stdev(ms) Rate(M/s) Per Row(ns) Relative
12+
---------------------------------------------------------------------------------------------------------------------------
13+
prepare make_timestamp() 3651 3697 58 0.3 3651.4 1.0X
14+
make_timestamp(2019, 1, 2, 3, 4, 50.123456) 89 99 10 11.3 88.6 41.2X
15+
make_timestamp(2019, 1, 2, 3, 4, 60.000000) 72 73 1 13.9 72.1 50.6X
16+
make_timestamp(2019, 12, 31, 23, 59, 60.00) 66 68 3 15.2 65.8 55.5X
17+
make_timestamp(*, *, *, 3, 4, 50.123456) 265 272 6 3.8 265.1 13.8X
18+
make_timestamp(*, *, *, *, *, 0) 259 266 6 3.9 259.1 14.1X
19+
make_timestamp(*, *, *, *, *, 60.0) 271 278 9 3.7 271.2 13.5X
20+
make_timestamp(2019, 1, 2, *, *, *) 3838 3850 12 0.3 3837.7 1.0X
21+
make_timestamp(*, *, *, *, *, *) 3854 3877 20 0.3 3853.8 0.9X
2222

0 commit comments

Comments
 (0)