scala性能測試


主要對比scala 的for, while循環,以及和java for while循環作對比

scala代碼

object TestScalaClass {
  var maxindex = 100000

  def testloopfor(): Unit ={
    var beg = System.currentTimeMillis()
    var sum = 0
    for (i <- 0 to  maxindex) {
      sum += i
    }

    println("value " + sum +  " 耗時: " + (System.currentTimeMillis() - beg))
  }

  def testswhile(): Unit ={
    var beg = System.currentTimeMillis()
    var sum = 0
    var i = 0;
    while (i < maxindex ){
      i+=1
      sum += i
    }
    println("value " + sum +  " 耗時: " + (System.currentTimeMillis() - beg))
  }


   def main (args: Array[String]) {
     testswhile()
     testloopfor()

  運行結果 

time1

value 705082704 耗時: 338
value 705082704 耗時: 13 

time2

value 705082704 耗時: 271
value 705082704 耗時: 11

time3

value 705082704 耗時: 289
value 705082704 耗時: 10

可以看出在scala 中 for循環比while循環慢接近30倍

java測試代碼

	  long begtime = System.currentTimeMillis();
	  int i = 0;
	  int sum = 0;
	  for (i = 0 ; i < 100000; i++)
		  sum += i;
		  
	  long endtime = System.currentTimeMillis();
	  System.out.println("耗時: " + (endtime - begtime) );
	  
//	  long begtime = System.currentTimeMillis();
//	  int i = 0;
//	  int sum = 0;
//	  
//	  while(i <100000){
//		  i++;
//		  sum += i;
//	  }
//		  
//	  long endtime = System.currentTimeMillis();
//	  System.out.println("耗時: " + (endtime - begtime) );

  在java中,for循環和while循環兩者效率相差不大,運行時間集中在1-10之間,平均3ms左右 ,比scala的while循環也快幾倍。

 

scala 測試hashmap

   def testhashmap(): Unit ={
     print("\n scala hashmap \n")
     var buf = new scala.collection.mutable.HashMap[String, String]()
     var beg = System.currentTimeMillis()
     var i = 0
     while (i <= 100000){
       buf += (i.toString -> i.toString)
       i +=1
     }
//     for (i <- 0 to 100000){
//       buf += (i.toString -> i.toString)
//     }
     buf += ("11" -> "11")
     println(System.currentTimeMillis() - beg)
     beg = System.currentTimeMillis()
     //buf.foreach(f=>print("key: " + f._1 + "value :" + f._2 + "\t"))

     print("\n java hashmap \n")
     var javamap  = new JavaHashMap[String, String]()

     i = 0
     while (i <= 100000){
       javamap.put(i.toString, i.toString)
       i +=1
     }
//
//     for(i <- 0 to 100000){
//       javamap.put(i.toString, i.toString)
//     }

//     for(i <- javamap.keySet().toArray()){
//       print("key:= " + i  + " value " + javamap.get(i) + "\t")
//     }
     println(System.currentTimeMillis() - beg)
   }

使用while循環

scala hashmap
216

java hashmap
64

使用for循環

scala hashmap
299

java hashmap
89

while效率相對高點。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM