struct Vec {
data: [f32; 3],
}
impl Vec {
fn dot(&self, other: &Vec) -> f32 {
..
}
// vs
fn dot(self, other: Vec) -> f32 {
..
}
}
現在ベクトル計算ライブラリを作成しており、ベクタータイプを借りてコピーする必要があるかどうかは疑問です。小さなデータ型を借りたりコピーしたりする必要がありますか?
現時点では、を常時書き込む必要がないため、Vec
の場合はCopy
を実装しています。これによりAPIが少し良くなります。
しかし、すべての制約もCopy
を満たす必要があるため、より複雑な制約が必要です。
パフォーマンスを向上させる可能性があるのはなぜですか?
人間工学的に優れている可能性があるのはなぜですか?
編集:私が作成した
test bref_f32 ... bench: 2,736,055 ns/iter (+/- 364,885)
test bref_f64 ... bench: 4,872,076 ns/iter (+/- 436,928)
test copy_f32 ... bench: 2,708,568 ns/iter (+/- 31,162)
test copy_f64 ... bench: 4,890,014 ns/iter (+/- 553,050)
小さなパフォーマンスの面で、この例のref
とcopy
差がないようです。
Copy
は、ライブラリユーザーにとってより人間工学的に優れているようです。
あなたは、「慣用的」ではなく「パフォーマンス」または「境界を簡素化」についてお聞きしたい本当によろしいですか?イディオムは非常に*主観的なので、私は両方の選択肢が推奨されることがあり、明確な客観的な答えが存在しないことを恐れています....あなたの質問は、閉鎖のために準備されています(主に意見ベース)。 @MatthieuM。 –
。私は慣用錆コードがどのように見えるべきかについていくつかのガイドラインがあると仮定し、質問を言い換えて例を追加しました。 –