主要對比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效率相對高點。