0

Excel APIを使用してC#コードを介して大きなシートの各セルに割り当てることは非常に非効率的である可能性があるため、セルの範囲に割り当てようとしています。ただし、Range.Value2 は多次元配列でのみ機能します。私の場合、文字列のリストがあります。これを行う方法はありますか?リストと配列の間を行ったり来たりするのは非効率的です。

ありがとう

4

1 に答える 1

1

Excel相互運用のコストは、アウトプロセスコンポーネントへの呼び出しを行うオーバーヘッドです。プロセスの境界を越えてデータをマーシャリングするための作業を行う必要があります。しかし、それはデータの量に依存する一定のコストです。データが少ない方が良いですが、それはあなたが持っている典型的な選択ではありません。

したがって、真のコストは、そもそも電話をかけるオーバーヘッドにあります。これは、インプロセスメソッド呼び出しを行うコストと比較して非常に重要です。最悪の場合、これには数回のCPUサイクルが必要です。アウトプロセス呼び出しには、2つのスレッドコンテキストスイッチが必要です。これは、プロセッサのオーバーヘッドのためだけに、最低でも2000〜10000サイクルのコストがかかります。Excel内で実行する必要のあるスレッドは別のプロセスによって所有されているため、プロセッサキャッシュはジャンクであるため、あなたはそのハイエンドにいます。そのスレッドが応答する待ち時間を追加します。これは非常に予測不可能です。

したがって、変換を行って先に進むために、数万のCPUサイクルの予算があります。それらを賢く使う。そしてもちろん、実際に試してみてください。誰もあなたに保証を与えることはできません。

于 2012-11-10T02:00:27.193 に答える