IntフィールドとDoubleフィールドがほとんどないクラスがあります。あるオブジェクトから別のオブジェクトにすべてのデータをコピーするための最速の方法は何ですか?
class IntFields {
private val data : Array[Int] = Array(0,0)
def first : Int = data(0)
def first_= (value: Int) = data(0) = value
def second : Int = data(1)
def second_= (value : Int) = data(1) = value
def copyFrom(another : IntFields) =
Array.copy(another.data,0,data,0,2)
}
これが私が提案する方法です。しかし、私はscalaの内部を明確に理解していないので、それが本当に効果的であるとは思えません。
update1:
実際、私はscalaに相当するc++memcpyを探しています。単純なオブジェクトを1つ取り、その内容をバイトごとにコピーする必要があります。
配列のコピーは単なるハックです。私は通常のscalaでサポートされている方法をグーグルで検索しましたが、何も見つかりませんでした。
update2:
私は2つのホルダーをマイクロベンチマークしようとしました。12個の変数を持つ単純なケースクラスと、配列でバックアップされた1つです。すべてのベンチマーク(コレクションに対する単純なコピーと複雑な計算)では、アレイベースのソリューションの動作が約7%遅くなります。
したがって、memcpyをシミュレートするための他の手段が必要です。