2011-07-27 15 views
1

私はC#でBitArrayを使用してふるいエラトステネスのアルゴリズムを実装しています。4.コードがありますulong変数をintにキャストする必要があります。その問題は、ユーザーがInt32.MaxValueより大きい数値を入力すると、パフォーマンスとデータ損失に影響します。では、キャストなしで、ulongでBitArrayを使用する方法(回避策)はありますか?C#BitArrayとInt64の

+0

Array.ConvertAllを使用しようとしましたか? –

+1

ulongを使用しなければなりません(どれだけの素数を見つける必要がありますか)? BitArrayを使用する必要がありますか? – hatchet

+0

私はいくつかの素数生成アルゴリズムの実行時のパフォーマンスを比較しようとしています。いくつかのアルゴリズムの間では、パフォーマンスに大きな違いが見られるのは大きな数字が出現するときだけです。それが私がulongを必要とする理由です。ビット配列に関しては、Windowsのプロセスごとに2GBの制限があるため、それを使用する必要があります。 BitArray以外のものは、数値> 1bilのためにOutOfMemoryExceptionをスローします – Lenquist

答えて

0

私はあなたが3つの選択肢があると思う:、それが使用するように書かれているものであるため、int型であなたが行ったようにintへULONGの変換やキャストとの

  1. 使用BitArray、
  2. 使用BitArrayを
  3. は、キャストなしでulongsをとるBitArray以外を使用します。
+0

私これらの選択肢を認識していますが、いずれも十分です。最初のものはパフォーマンスの低下のために無視できるものではなく、2番目は制限されたユーザー入力のため、3番目はバイト配列以外のものでメモリが不足しているためです(ブール値の配列で試してみましたが、私が気づいていないことがあるかもしれない何か他のものがあるかもしれない)。選択肢3のために – Lenquist

+0

を使用すると、独自のBitArrayを作成することができます。最初から、またはBitArrayの配列として作成できます。 – hatchet

+0

あなたはこれについて尋ねていませんが、ふるいを実行するにあたって猫を肌に触れる方法は複数あり、他のものよりもメモリを少し節約しています。 – hatchet

関連する問題