私はスカラーのvalue class
がコンパイラ時のオペレーションをインライン化していることを知っています。多分これスカラ値クラス、使用例
case class A(i: Int) extends AnyVal {
def +(that: A) = A(this.i + that.i)
}
A(1) + A(2) // After compile it equals to 1 + 2
よう
しかし、それは私には大したことではないようです。
それはと思われていません
はthis.i + that.i
を呼び出して、パフォーマンスを向上させるかもしれないが、なぜScalaの中value class
と任意のユースケースを必要とするはるかに遅い
i + i
よりも?
* this.iを呼び出します+ that.iはi + iよりずっと遅くはないようです*どうやってこれを決めましたか?あなたはそのコードをマイクロベンチマークしましたか? –
コールは高速です(これはJITコンパイラによってインライン展開される可能性が高い)ことに加えて、値クラスによってオブジェクトのインスタンス化が回避され、ガベージコレクションの負荷が軽減されます。 – Suma