Skip to content

Instantly share code, notes, and snippets.

@goldeneggg
Created November 5, 2013 11:19
Show Gist options
  • Save goldeneggg/7317600 to your computer and use it in GitHub Desktop.
Save goldeneggg/7317600 to your computer and use it in GitHub Desktop.
二重引用符付きCSVを処理するとして、str.split(",")した後のクォーテーション除去を map(_.replace("¥"")) と map(_.init.tail) で速度比較したら後者の方が速かった (20回ずつ動かして比較) #scala
object Hoge {
def main(args: Array[String]) {
for (i <- (1 to 20)) mainRecur(args(0).toInt)
}
private def mainRecur(ver: Int) {
var start = System.nanoTime
val s = "\"1\",\"22\",\"333\",\"4444\",\"55555\""
val ss = s.split(",")
val l = if (ver == 1) verReplace(ss) else verInitTail(ss)
var end = System.nanoTime
var sec = (end - start)
println("Done. Total nano sec: %d".format(sec))
}
private def verReplace(ss: Array[String]) = {
ss map { _.replace("\"", "") }
}
private def verInitTail(ss: Array[String]) = {
ss map { _.init.tail }
}
}
@goldeneggg
Copy link
Author

replace版

Done. Total nano sec: 614000
Done. Total nano sec: 35000
Done. Total nano sec: 34000
Done. Total nano sec: 31000
Done. Total nano sec: 31000
Done. Total nano sec: 30000
Done. Total nano sec: 30000
Done. Total nano sec: 29000
Done. Total nano sec: 30000
Done. Total nano sec: 30000
Done. Total nano sec: 30000
Done. Total nano sec: 29000
Done. Total nano sec: 29000
Done. Total nano sec: 30000
Done. Total nano sec: 32000
Done. Total nano sec: 29000
Done. Total nano sec: 29000
Done. Total nano sec: 28000
Done. Total nano sec: 29000
Done. Total nano sec: 32000

init.tail版

Done. Total nano sec: 579000
Done. Total nano sec: 14000
Done. Total nano sec: 13000
Done. Total nano sec: 15000
Done. Total nano sec: 12000
Done. Total nano sec: 12000
Done. Total nano sec: 15000
Done. Total nano sec: 11000
Done. Total nano sec: 11000
Done. Total nano sec: 12000
Done. Total nano sec: 15000
Done. Total nano sec: 11000
Done. Total nano sec: 11000
Done. Total nano sec: 11000
Done. Total nano sec: 14000
Done. Total nano sec: 11000
Done. Total nano sec: 11000
Done. Total nano sec: 15000
Done. Total nano sec: 11000
Done. Total nano sec: 11000

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment