У меня есть очень простой код
val things: Seq[Long] = (1L to 100000000L)
val start: Long = System.nanoTime()
val result = things.sum
val end: Long = System.nanoTime()
println(end-start)
, который печатает что-то вроде 1790900
, примерно 2 мс.
Однако, когда я представляю свой класс кейсов
case class Thing(foo: Long) extends AnyVal
кажется, это меняет все. Ты мне не веришь? Просто смотреть. Я сопоставлю свою последовательность длин с Thing
с и обратно с последовательностью длин:
val things: Seq[Long] = (1L to 100000000L).map(i => Thing(i)).map(t => t.foo)
val start: Long = System.nanoTime()
val result = things.sum
val end: Long = System.nanoTime()
println(end-start)
Теперь эталонный тест имеет порядок 1058361600
.
Как это возможно?
Когда