Это довольно интересно!Я добавил println("start")
и "end"
вокруг строки, которая создает регулярное выражение, и запустил код - это напечатает
start
end
, затем сделает паузу примерно на три секунды, прежде чем печатать оставшуюся часть вывода.
Таким образом, похоже, что происходит, когда регулярное выражение создается, но не запускается, пока не будет вызван toString
для вывода его на консоль.Чтобы заставить тест работать, добавьте ручной вызов toString
перед подсчетом затраченного времени.
scala> val b = System.currentTimeMillis; val v = new scala.util.matching.Regex("(x+)+y").findAllIn("x"*25); v.toString; System.currentTimeMillis-b
b: Long = 1330789547209
v: scala.util.matching.Regex.MatchIterator = empty iterator
res14: Long = 4881
Также это должно быть System.currentTimeMillis-b
, а не наоборот ...