我如何知道scala中代码的运行时?

问题描述 投票:10回答:5

我需要计算scala中代码的运行时。代码是。

val data = sc.textFile("/home/david/Desktop/Datos Entrada/household/household90Parseado.txt")

val parsedData = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()

val numClusters = 5
val numIterations = 10 
val clusters = KMeans.train(parsedData, numClusters, numIterations)

我需要知道运行时来处理这段代码,时间必须是秒。非常感谢你。

scala apache-spark bigdata
5个回答
25
投票

基于讨论here,您将要使用System.nanoTime来测量经过的时间差:

val t1 = System.nanoTime

/* your code */

val duration = (System.nanoTime - t1) / 1e9d

5
投票

你可以使用scalameter:https://scalameter.github.io/

只需将代码块放在括号中:

val executionTime = measure {
  //code goes here
}

您可以将其配置为预热jvm,以便测量更可靠:

val executionTime = withWarmer(new Warmer.Default) measure {
  //code goes here
}

4
投票

从qazxsw poi开始,我们可以使用qazxsw poi(仅限scala直到现在)才能获得执行动作/转换所需的时间。

例:

找到Spark2的数量

spark.time(<command>)

3
投票

最基本的方法是简单地记录开始时间和结束时间,并进行减法。

records in a dataframe

0
投票

这将是计算scala代码时间的最佳方法。

scala> spark.time(
                 sc.parallelize(Seq("foo","bar")).toDF().count() //create df and count
                 )
Time taken: 54 ms //total time for the execution
res76: Long = 2  //count of records
© www.soinside.com 2019 - 2024. All rights reserved.