Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
次のコードの実行時間を短縮する方法はありますか?
Matrix<double, 10, Dynamic> A(10,n); A << a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;
ここで、n は実行時にのみ認識され、a1、a2 などは長さ n のベクトルです。マトリックスの最大サイズを近似してから、double、10、Dynamic、0、10、10000を使用しようとしましたが、速度は向上しませんでした。
A に RowMajor 行列を使用すると、キャッシュの一貫性とベクトル化が向上するため、コピーははるかに高速になります。
Matrix<double,10,Dynamic,RowMajor> A(10,n);
ただし、これにより他の操作が遅くなる可能性もあります。
最後に、最適化をオンにしてコンパイルしたことを確認してください (例: gcc での -O2)。
A.row(i) = a_i;
(それはコンパイラに依存するためわかりませんが、そのコピーがボトルネックである場合は試してみる価値があります)