Это более чем в два раза короче ( только 3 вызова метода ):
def dateTimeStringToEpoch(s: String, pattern: String): Long =
LocalDateTime.parse(s, DateTimeFormatter.ofPattern(pattern))
.toEpochSecond(ZoneOffset.UTC)
Кстати, я бы построил DateTimeFormatter
за пределами dateTimeStringToEpoch
и передал бы егов качестве параметра метода:
def dateTimeStringToEpoch(s: String, formatter: DateTimeFormatter): Long =
LocalDateTime.parse(s, formatter).toEpochSecond(ZoneOffset.UTC)
Фактически выполнив тест производительности, существует небольшая разница в производительности (едва ли в 2 раза) при инициализации DateTimeFormatter
вне метода.
scala> val pattern = "yyyy/MM/dd HH:mm:ss"
pattern: String = yyyy/MM/dd HH:mm:ss
scala> time(() => randomDates.map(dateTimeStringToEpoch(_, pattern)))
Took: 1216
scala> time(() => randomDates.map(dateTimeStringToEpochFixed))
Took: 732