System.Numerics.Vector<T>
(documentation)を使用しようとしています。 ベクトルはなぜ<T> .Countスタティックですか?
var v = new System.Numerics.Vector<double>(new double[] { 12, 13, 14 });
Assert.AreEqual(3, v.Count);
をしかし、それは私のビルドエラーました:Vector<T>.Count
が静的である、驚いたことに
Member 'Vector.Count' cannot be accessed with an instance reference; qualify it with a type name instead
を。
だから私は試してみました:
var v = new System.Numerics.Vector<double>(new double[] { 12, 13, 14 });
Assert.AreEqual(3, Vector<double>.Count);
今、コードのビルドが、ユニットテストが失敗した:
Assert.AreEqual failed. Expected:<3>. Actual:<2>.
何が起こっていますか?
私が見つけた調査:
Assert.AreEqual(2, Vector<double>.Count);
Assert.AreEqual(4, Vector<float>.Count);
Assert.AreEqual(4, Vector<int>.Count);
Assert.AreEqual(2, Vector<long>.Count);
あなたの2つのスニペットが同一です。 – BoltClock
@BoltClockありがとうございました。 –
なぜ、クラスがフレームワークに追加されなかったのかを発見しています。あなたが得る価値も悲しいことですが、HaswellまたはBroadwellプロセッサでは、AVX2が提供する256ビットのYMMレジスタを使用するため、値を倍にする必要があります。テーブルに2倍のperfを残す。実装の詳細を隠すのは難しい。 AVX-512がまもなく登場です:) –