scala 多字符替换效率

来看这三种不同的写法

object strreplace {
  def main(args: Array[String]): Unit = {
    val loop = 50000000;
    {
      val start = System.currentTimeMillis()
      for (i <- 0 to loop) {
        val a = ("123456".replace("2", "00").replace("3", "00") )
//        println(a)
      }
      val finish = System.currentTimeMillis()
      println( (finish-start)/1000.0 + " seconds")      
    }
    {
      val start = System.currentTimeMillis()
      for (i <- 0 to loop) {
        val a = ("123456".map { x => if (x == '2' || x == '3') "00" else x }.mkString("") )
//        println(a)
      }
      val finish = System.currentTimeMillis()
      println( (finish-start)/1000.0 + " seconds")      
    }
    {
      val start = System.currentTimeMillis()
      for (i <- 0 to loop) {
        val a = ("123456".replaceAll("[23]", "00") )
//        println(a)
      }
      val finish = System.currentTimeMillis()
      println( (finish-start)/1000.0 + " seconds")      
    }
  }
}

输出如下

36.898 seconds
16.776 seconds
23.287 seconds

Leave a Reply

Your email address will not be published. Required fields are marked *