質問

私は非常に大きな数を処理する必要がありますアプリに取り組んでいます。

私はいくつかの利用可能LargeNumberクラスをチェックアウトし、私はと満足していますそのいくつかを発見しました。私は、大きな整数のためと大きな浮動小数点数のクラスを持っています。

の数字の一部は小さくなりますし、いくつかの大きな問題は、それが数の長さをチェックする価値があると、それは通常のC#のintまたはダブル小さな使用である場合であれば、大きな使用は、私が持っている他のクラスであるかどうかであるので、または私はすでに大きな整数と大型フロートクラスを使用していた場合、私はちょうど、さらに小さい数字のためにそれらに固執する必要があります。

私の考察は、純粋にパフォーマンスです。私はの後にあるに置かれている各番号を確認する価値があるだろうと小さい番号の数学で十分な時間を節約します。

役に立ちましたか?

解決

伝えるのは本当に難しいが - あなたのサードパーティのライブラリに依存します)。

最善の策は、System.Diagnostics.StopWatchクラスを使用し、それらを時間をgazzillion異なる計算を行い、結果を比較することであろう、私は推測..

[EDIT] - ベンチマークについて、私は通常の32/64ビット数で計算を行うためのベンチマーク一連のあなたのLARGEINT型にしてください、そして、一連のチェック数は、正規のInt32 / Int64型に合うことができる場合その後、種類(その彼らが必要)、これらのタイプにそれらを「ダウンキャスト」、およびこれらのタイプを使用して同じ計算を実行します。ビルトインタイプが高速化されている場合、あなたの質問から、これはあなたがやっているだろうどのように聞こえる..

アプリケーションが自分よりもより多くの人々のために標的化されている場合は、

、(シングルコア、マルチコア、32ビット、64ビットプラットフォーム)別のマシン上でそれらを実行しようとすると、プラットフォームは計算が取る時間に大きな影響を与えると思われる場合は、別のマシンで異なる計算を行うための戦略パターンのいくつかの並べ替えを使用します。

幸運:)

他のヒント

私はまともな多数のライブラリーは、それ自身でこの最適化を行うことができるだろうという期待...

私は、はい、チェックを超える限り、あなたは、通常の範囲内で十分な値を持っているように、自分自身のために支払うことになると思います。

論理は単純である:整数の加算は、一つのアセンブリ命令です。比較と組み合わせることで、それは3つのまたは4個の命令です。このような操作の任意のソフトウェア実装は、おそらくはるかに遅くなります。

最適には、このチェックは自分のライブラリLargeNumberで行う必要があります。彼らはそれをしない場合は、あらゆる場所にチェックを避けるためにラッパーが必要な場合があります。しかし、その後、あなたは同様に、ラッパーの追加コストを考える必要があります。

同じフィールドは非常に大きな数を処理するために必要なプロジェクトで働いていたと同時に、非常に少数のための精度をHANDELS。
そのような種類のすべての番号の各フィールド(仮数部と指数部)に格納してしまった。
私たちは、仮数/指数の計算のためのクラスを作って、それがうまく行った。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top