データ視覚化アプリケーション (平行座標) を使用しています。これには、画面上に大量の線を描画することが含まれます。アプリケーションは、巨大なデータセット用です。テスト データ セットには、約 250 万行 (正確には 2527700 行) が含まれます。画面が乱雑になりますが、いくつかのパターンが表示されます。アプリケーションには、X と Y に沿ってスケーリングする機能があります。通常のズーム レベルでは、約 300K の線を描画します。アプリケーションは Qt で書かれており、レンダリングにかかる時間はかなりのものです。典型的な数値は (ミリ秒単位の時間)
かかった時間: 496 ドリュー 1003226 行
かかった時間: 603 ドリュー 1210032 行
かかった時間: 112 ドリュー 344582 行
かかった時間: 182 ドリュー 387960 行
かかった時間: 178 ドリュー 361424 行
かかった時間: 222 ドリュー 676470 行
かかった時間: 171 Drew 475652 行
かかった時間: 251 ドリュー 318709 行
かかった時間: 5 ドロー 14160 行
かかった時間: 16 Drew 27233 行
次のコード セグメントは、描画された線分の時間とカウントに使用されます。レンダリングは、オフスクリーン イメージ (フォーマット Format_ARGB32_Premultiplied の QImage) に対して行われます。QImage のサイズは最大 1366 x 768 です。セグメント タイプは QVector です。
QTime m_timer;
m_timer.start();
painter.drawLines(segments);
qDebug() << "Time taken: " << m_timer.elapsed();
painter.end();
qDebug() << "Drew " << segments.size();
この QImage は、将来の描画を保存するためにキャッシュされます。私は DirectX を使用したことがありません。Direct 2D レンダリングは、私が既に持っているものよりもパフォーマンス上の利点をもたらしますか? これらの数値を改善する方法はありますか?
Direct 2D レンダリングでこれらの数値を改善できる場合、どの技術スタックを使用すればよいですか? C#/SharpDX を使用したほうがよいでしょうか? Qtは翻訳のみでDirectXを実行でき(コストがいくらかはわかりません)、アプリが主にWindowsであるため、C#は開発を容易にする可能性があるため、これを尋ねます。処理する。