You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by do...@apache.org on 2019/03/01 04:56:16 UTC
[spark] branch master updated: [SPARK-27009][TEST] Add Standard
Deviation to benchmark results
This is an automated email from the ASF dual-hosted git repository.
dongjoon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new bc7592b [SPARK-27009][TEST] Add Standard Deviation to benchmark results
bc7592b is described below
commit bc7592ba1186001127ecfae327ac22a0727b8bab
Author: Yifei Huang <yi...@palantir.com>
AuthorDate: Thu Feb 28 20:55:55 2019 -0800
[SPARK-27009][TEST] Add Standard Deviation to benchmark results
## What changes were proposed in this pull request?
Add standard deviation to the stats taken during benchmark testing.
## How was this patch tested?
Manually ran a few benchmark tests locally and visually inspected the output
Closes #23914 from yifeih/spark-27009-stdev.
Authored-by: Yifei Huang <yi...@palantir.com>
Signed-off-by: Dongjoon Hyun <dh...@apple.com>
---
.../scala/org/apache/spark/benchmark/Benchmark.scala | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/core/src/test/scala/org/apache/spark/benchmark/Benchmark.scala b/core/src/test/scala/org/apache/spark/benchmark/Benchmark.scala
index df1ed28..73f9d0e 100644
--- a/core/src/test/scala/org/apache/spark/benchmark/Benchmark.scala
+++ b/core/src/test/scala/org/apache/spark/benchmark/Benchmark.scala
@@ -111,13 +111,15 @@ private[spark] class Benchmark(
// The results are going to be processor specific so it is useful to include that.
out.println(Benchmark.getJVMOSInfo())
out.println(Benchmark.getProcessorName())
- out.printf("%-40s %16s %12s %13s %10s\n", name + ":", "Best/Avg Time(ms)", "Rate(M/s)",
+ out.printf("%-40s %14s %14s %11s %12s %13s %10s\n", name + ":", "Best Time(ms)", "Avg Time(ms)", "Stdev(ms)", "Rate(M/s)",
"Per Row(ns)", "Relative")
- out.println("-" * 96)
+ out.println("-" * 120)
results.zip(benchmarks).foreach { case (result, benchmark) =>
- out.printf("%-40s %16s %12s %13s %10s\n",
+ out.printf("%-40s %14s %14s %11s %12s %13s %10s\n",
benchmark.name,
- "%5.0f / %4.0f" format (result.bestMs, result.avgMs),
+ "%5.0f" format result.bestMs,
+ "%4.0f" format result.avgMs,
+ "%5.0f" format result.stdevMs,
"%10.1f" format result.bestRate,
"%6.1f" format (1000 / result.bestRate),
"%3.1fX" format (firstBest / result.bestMs))
@@ -156,9 +158,13 @@ private[spark] class Benchmark(
// scalastyle:off
println(s" Stopped after $i iterations, ${NANOSECONDS.toMillis(runTimes.sum)} ms")
// scalastyle:on
+ assert(runTimes.nonEmpty)
val best = runTimes.min
val avg = runTimes.sum / runTimes.size
- Result(avg / 1000000.0, num / (best / 1000.0), best / 1000000.0)
+ val stdev = if (runTimes.size > 1) {
+ math.sqrt(runTimes.map(time => (time - avg) * (time - avg)).sum / (runTimes.size - 1))
+ } else 0
+ Result(avg / 1000000.0, num / (best / 1000.0), best / 1000000.0, stdev / 1000000.0)
}
}
@@ -191,7 +197,7 @@ private[spark] object Benchmark {
}
case class Case(name: String, fn: Timer => Unit, numIters: Int)
- case class Result(avgMs: Double, bestRate: Double, bestMs: Double)
+ case class Result(avgMs: Double, bestRate: Double, bestMs: Double, stdevMs: Double)
/**
* This should return a user helpful processor information. Getting at this depends on the OS.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org