2016-08-21 12 views
-1

私は、北アメリカのパワーグリッドをモデル化した非常に大きなモンテカルロシミュレータを用意しています。非常に大きく、実行には時間がかかりますが、最初はExcel/VBAで簡単に実行されました。Excel/VBAをコンパイルした言語に変換する

実行時を最適化するために、VBAコードをコンパイル済みの言語に移植したいと考えています。理想的には、Excelのスプレッドシート構造を利用するためにスプレッドシート形式でデータを残したいので、コードは基本的にスプレッドシートに行き、データを集めて(つまり、大量の情報ブロックを配列に読み込んで)アレイ。

これを達成するための一般的に「最良の」方法はありますか?例えば、C#にはEPPlusのようなアドインがいくつかありますか?私は10年前にC++でコードを作成していましたので、しばらく経っていますので、もう少し傾いたプロセスをやり直して、正しいパスを選択したいと思っています(これに取り組む方法はたくさんあります私はVBAのランタイムコードを残しておいたのと同じくらい大丈夫だと思います)

+0

確かに、コンパイル言語は速くなりますが、それがダウンしてあなたのコードを処理する方法を知ってどれだけになる時間の多くすることができます。したがって、ここでVBAコードを共有し、Excelアドインを尋ねる代わりにVBAコードを最適化することをお勧めします。コードを最適化するために[コードレビュー](http://codereview.stackexchange.com/)でコードを共有することもできます。 –

+0

私は@ Anastasiya-Romanova秀と同意します。あなたは、既存のVBAコードを別の言語に移植するのではなく、最適な時間を過ごすことで、より良い結果を得られるでしょう。 – Kaz

答えて

1

すべてのものは、現在のアプリケーションに依存します。コード、ワークブックの大きさはどれくらいですか...まあまあです。あなたがモンテカルロをしているので、私は主な考慮事項の1つがスピードだと思います。

VSTOを使用するとC#を使用できますが、これはCOM相互運用性のためにVBAのアプローチよりも遅くなります。 C#でコードを作成してCOMアドインを作成しても問題ありませんが、まだCOM相互運用を行っていておそらく遅すぎます。

状況に応じて、私はVBAよりはるかに高速なC++アドインのコーディングの方向に押し込まれると思います。このためにGoogleに参照が読み込まれています。

XLL Excel addin in unmanaged C++

関連する問題