パフォーマンス (速度) が重要な金融アプリケーションを C# で作成しています。これは金融アプリであるため、Decimal データ型を集中的に使用する必要があります。
プロファイラーの助けを借りて、可能な限りコードを最適化しました。Decimal を使用する前は、すべてが Double データ型で行われており、速度は数倍高速でした。ただし、Double はバイナリの性質のためオプションではなく、複数の操作の過程で多くの精度エラーが発生します。
.NET のネイティブの Decimal データ型よりもパフォーマンスを向上させることができる、C# とやり取りできる 10 進ライブラリはありますか?
すでに得た回答に基づいて、十分に明確ではないことに気付いたので、ここにいくつかの追加の詳細を示します。
- アプリは可能な限り高速である必要があります (つまり、Decimal の代わりに Double を使用したときと同じくらい高速になるのは夢のようです)。演算はハードウェア ベースであるため、Double は Decimal よりも約 15 倍高速でした。
- ハードウェアはすでに一流で (私は Dual Xenon Quad-Core で実行しています)、アプリケーションはスレッドを使用するため、マシンの CPU 使用率は常に 100% です。さらに、アプリは 64 ビット モードで実行されているため、32 ビットよりもパフォーマンスが大幅に向上しています。
- 私は正気のポイントを超えて最適化しました (1 か月半以上の最適化。信じられないかもしれませんが、最初に参照として使用したのと同じ計算を行うのにかかった時間の約 1/5000 かかります)。この最適化には、文字列処理、I/O、データベース アクセスとインデックス、メモリ、ループ、いくつかの処理方法の変更、さらにはあらゆる場所での "if" に対する "switch" の使用など、すべてが含まれていました。プロファイラーは、残りのパフォーマンスの原因が Decimal データ型演算子にあることを明確に示しています。かなりの時間を追加しているものは他にありません。
- ここで私を信じてください。アプリケーションを最適化するために、C#.NET の領域でできる限りのことを行ってきました。現在のパフォーマンスには本当に驚かされます。Decimal のパフォーマンスを Double に近いものに改善するための良いアイデアを探しています。私はそれがただの夢であることを知っていますが、ただ確認したかったので、可能な限りすべてを考えました. :)
ありがとう!