【问题标题】:How to measure the running time of a scala scalding program?如何测量scala烫伤程序的运行时间?
【发布时间】:2015-01-31 00:36:52
【问题描述】:

我有一个简单的热烫程序来转换我在本地模式下使用 com.twitter.scalding.Tool 执行的一些数据。

val start = System.nanoTime    

val inputPaths = args("input").split(",").toList
val pipe = Tsv(inputPaths(0))
// standard pipe operations on my data like .filter( 'myField ), etc.
.write(Tsv(args("output")))

println("running time: " + (System.nanoTime - start) / 1e6 + "ms")

我想测量程序的运行时间。我在代码的开头和结尾编写了测量时间的标准技巧,然而,结果是~100 ms,而实际时间接近 60 s。做这个的最好方式是什么?谢谢!

【问题讨论】:

    标签: scala hadoop scalding


    【解决方案1】:

    对我有用的一种方法是使用 Micro Benchmarks。

    目前您可以使用 Scala 程序 http://scalameter.github.io/

    它考虑了 GC 以及预热 JVM。我认为应该在单个 JVM 上以本地模式工作。

    【讨论】:

    • 感谢您的回答!我想知道是否有更简单的东西而不使用另一个包?为什么我原来的解决方案不起作用?
    • 您的解决方案应该可以工作,并让您对性能有一个很好的了解。如果您使用 sbt 作为构建工具,那么使用 Scalameter 真的很容易。甚至 Scalameter 也不完美。我相信这更好,因为他们考虑了 GC 和 JVM 变暖。此外,您可以执行其中的多个以更好地衡量您的执行时间。
    【解决方案2】:

    我找到了一个简单的答案。运行作业时在 hadoop 命令前添加 time 关键字。

    time hadoop jar myjob.jar ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 2022-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多