私の現在の仕事は、一連の債務者の地域ごとの自己資本比率の数値を計算するモンテカルロシミュレーションを最適化することです。
実行が約10倍遅いため、本番環境で実行する必要があり、数または毎日の実行が必要です。さらに、結果の数値の粒度は、ある段階でデスクレベルまで改善する必要があります。私が提供したコードは、基本的に、半生産能力のビジネスユニットで使用されるプロトタイプです。
アプリケーションは現在シングルスレッドであるため、マルチスレッドにする必要がありSystem.Threading.ThreadPool
ます。MicrosoftParallel Extensionsライブラリを参照することもできますが、この銀行のサーバーでは.NET 2に制限されているため、この人のアプリケーションを検討する必要があります。ポート、http://www.codeproject.com/KB/cs/aforge_parallel.aspx。
.NET 3.5 SP1にアップグレードするために最善を尽くしていますが、これはこの規模の組織では主要な演習であり、契約期間内には不可能な場合があります。
dotTrace(http://www.jetbrains.com/profiler )のトライアルを使用してアプリケーションのプロファイルを作成しました。他にどのような優れたプロファイラーが存在しますか?無料のもの?
実行時間の多くは、均一な乱数を生成し、これを正規分布の乱数に変換するために費やされます。彼らはC#メルセンヌツイスターの実装を使用しています。彼らがそれをどこで手に入れたのか、あるいはそれが均一な乱数を生成するためにこれ(または最良の実装)を行うための最良の方法であるかどうかはわかりません。次に、これは計算で使用するために正規分布バージョンに変換されます(私はまだ翻訳コードを掘り下げていません)。
また、以下を使用した経験は何ですか?
http://www.qlnet.org(quantlibのC#ポート)または
あなたが知っている代替案はありますか?私はC#開発者なので、C#を好むでしょうが、C ++のラッパーは問題にならないはずですよね?
たぶん、C++実装を活用することでさらに速くなります。これらのライブラリのいくつかは、変換ステップなしで、正規分布の乱数を直接生成するための最速の方法を備えていると思います。また、後続の計算に役立つ他の関数がいくつかある場合もあります。
また、これが搭載されているコンピューターは、クアッドコアOpteron 275、8 GBメモリですが、Windows Server 2003Enterprise32ビットです。64ビットOSにアップグレードするようにアドバイスする必要がありますか?この決定を支持する記事へのリンクは本当にありがたいです。
とにかく、あなたが持っているかもしれないどんなアドバイスと助けも本当にありがたいです。