我在IDE中运行时,简单的scala代码运行速度比从终端

时间:2016-06-03 13:16:52

标签: scala intellij-idea

我对scala很新,今天在尝试时我想测试一个非常简单的程序的性能:

import java.util.Scanner
import scala.annotation.tailrec

object Tests {
    def main(args: Array[String]): Unit = {
        val sc = new Scanner(System.in)

        println("Enter a positive number : ")
        val length = sc.nextInt

        val fp_t0 = System.currentTimeMillis
        val list1 = fpListFill(List(), length)
        val fp_t1 = System.currentTimeMillis

        println(s"[fp]: time to fill the list = ${fp_t1 - fp_t0} ms")
    }

    @tailrec
    def fpListFill(list: List[Int], count: Int): List[Int] = {
        if (count == 0) count :: list
        else fpListFill(count :: list, count - 1)
    }
}

它只是向用户询问正数字长度,然后以递归方式创建长度为“length”的列表。

我测试了两种不同的方式,每次我都要求一个长度为1'000'000的列表

首先我用scalac编译代码并在终端中使用scala运行,这给了我:

Enter a positive number : 
1000000
[fp]: time to fill the list = 795 ms

然后,我在IntelliJ IDEA中创建了一个小项目,我在其中复制了上面的代码。在那里运行程序,这就是我得到的:

Enter a positive number : 
1000000
[fp]: time to fill the list = 25 ms

正如您所看到的,在性能方面存在很大差异。有人知道为什么吗? Thx提前。

0 个答案:

没有答案