0

Excelにデータを挿入してグラフを作成するプログラムがあります。すべての「数値演算」はプログラムで (linq を使用して) 実行されるため、Excel はグラフの作成にのみ使用されます。最終的な Excel には、約 300 のワークシート (データを含む 50 シートと 250 のグラフ) があります。そして、ここにパフォーマンスの問題があります。linq と regex の操作は非常に高速ですが、Excel ではすべてのグラフを生成するのに 4 分以上かかります。並列拡張について考え、グラフを 5 つの Excel ファイルに分割しました。

私の質問は、私が時間を失っているかどうかです。つまり、4 分間で 250 のグラフは、グラフあたり 1 秒のようなものです。並行して優れたグラフをそれよりも速く生成する必要がありますか? また、ファイルが大きくなると、(ほとんどのプログラムと同様に) Excel の動作が遅くなることに気付きました。10MBのエクセルでグラフを挿入するのに1秒、10KBのエクセルなら一瞬で挿入されます(私の印象だけかもしれませんが…)。

答えが並列拡張機能を使用する必要がある場合、同じ Excel アプリケーションと異なる Excel ファイルを使用するか、ファイルごとに異なる Excel アプリケーションを使用する必要がありますか?

4

1 に答える 1

1

Excelでこれをやろうとすると、多くの苦痛につながるでしょう。多数の優れた .net チャート作成ライブラリの 1 つをチャートに使用します。

何らかの理由で Excel を使用する必要がある場合は、別のワークブックが必要になります。ワークブックで一度に操作できるスレッドは 1 つだけです。複数のワークブックで複数のスレッドが並行して動作できると信じています。自分で実行したことはありませんが、動作しない理由はわかりません。

既存のコードが大幅に高速化される可能性は十分にあります。Excelにデータを追加している間、画面の更新を無効にしていますか? 自動再計算が無効になっていませんか? データをセルごとに Excel にプッシュしていますか、それとも範囲全体を一度にプッシュしていますか? セルごとに非常に遅いです。アウト プロセス COM サーバーの呼び出しの IPC コストが大きいため、Excel への呼び出しの数を最小限に抑える必要があります。

于 2013-04-04T11:32:08.160 に答える