7

このような pprograms をよく見かけます。ここInt64で、32 ビット プラットフォームでは絶対的なパフォーマンス キラーです。私の質問は今です:

タスク (私の場合は RNG) に特定の語長が必要な場合、Int6464 ビット プラットフォームで効率的ですか、それとも C 呼び出しを使用しますか? Int64そして、を に変換するのはどのくらい効率的Intですか?

4

2 に答える 2

2

64ビットシステムでは、Int64で問題ないはずですが、よくわかりません。

さらに重要なことに、暗号化または乱数生成を行う場合は、アルゴリズムが使用するように指示しているデータ型を使用する必要があります。また、符号に注意する必要があります。そうしないと、間違った結果が得られます。これは、暗号化が安全でないか、乱数ジェネレーターが実際にはランダムではないことを意味する場合があります(RNGは難しく、多くはランダムに見えますが、そうではありません)。

他のタイプの作業では、可能な限りIntegerを使用するか、Integral型クラスを使用してプログラムをポリモーフィックにします。次に、プログラムがプロファイルよりも遅いと思われる場合は、プログラムを高速化するときにどこに集中すべきかを判断します。整数型クラスを使用する場合、整数から整数への変更は簡単です。Haskellは、オーバーヘッドを回避するためにポリモーフィズムを使用する(ほとんどの)コードを特殊化するのに十分賢いはずです。

于 2011-08-05T02:10:12.663 に答える
1

64 ビットのパフォーマンスに関する興味深い記事はこちら:

私のコードは 64 ビットで高速になるのではないですか?

記事にあるように、大きなボトルネックはプロセッサではなく、キャッシュとメモリ I/O です。

于 2011-01-04T08:21:30.343 に答える