Внимай sbt-jmh совет
"Не доверяй никому, все на скамейке".
таким образом
sbt "jmh:run -i 10 -wi 5 -f 2 -t 1 bench.So60643849"
где
@State(Scope.Benchmark)
@BenchmarkMode(Array(Mode.Throughput))
class So60643849 {
val size = 1000000
val seq = Seq.fill(size)(42)
@Benchmark def ++(): Seq[Int] = seq ++ seq
@Benchmark def flatten(): Seq[Int] = Seq(seq, seq).flatten
}
дает с Scala 2.13.1, который по умолчанию имеет List
в качестве конкретной реализации Seq
[info] Benchmark Mode Cnt Score Error Units
[info] So60643849.$plus$plus thrpt 20 94.436 ± 4.928 ops/s
[info] So60643849.flatten thrpt 20 52.070 ± 6.549 ops/s
, поэтому seq1 ++ seq2
кажется быстрее. Кроме того, IMO, намерение кажется более ясным, чем Seq(seq1, seq2).flatten
.