他のほとんどの言語で浮動小数点の問題が発生するのを避けるため、Perl 6は可能な限り小数点以下を小数点として実装しています。小数点以下の桁数を使用することでPerl 6の性能が低下する
誰かがベンチマークを行ったか、これを行うパフォーマンスペナルティを理解していますか?
他のほとんどの言語で浮動小数点の問題が発生するのを避けるため、Perl 6は可能な限り小数点以下を小数点として実装しています。小数点以下の桁数を使用することでPerl 6の性能が低下する
誰かがベンチマークを行ったか、これを行うパフォーマンスペナルティを理解していますか?
Perl 6のパフォーマンスは小数
ため有理数を使用することによって被るん私が最も有用な全体的な答えは「いいえ、ありません本当に、しかし、私は少し手の込んだましょう」だと思います。
Rat
Sを使用し、合理的に正確かつ迅速に小数の計算を維持するためのP6が欲しい場合は、精度や性能を気にしないことを好む場合
。いずれかを含む式を計算する全体的な結果の分母以上P6Rat
sは64ビットをオーバーフローした場合
は次いでP6は自動的に妥当な性能を維持するために、近似Num
(double floatのP6の実装)に結果を切り替えます。
を保証したい場合は、直接、小数のための浮動小数点データ型を使用することができます。
これは、一般的に合理的なパフォーマンスよりも速い浮動小数点のパフォーマンスをもたらします。
たとえば、3.141592e0
は、有理数/小数のリテラルではなく、Num
/floatリテラルです。上その後、数値演算
Rational
role限られた精度Rat
クラス;任意の精度FatRat
class)のいずれかを使用した場合、100%の精度を保証したい場合計算が分母に収まる場合、そのデータは100%正確になります。
は、合理的なタイプを使用してのパフォーマンスへの影響を理解する上での出発点についてthe wikipedia page on rational data typesを読みます。
は、誰もがベンチマークまたはこれを行うのパフォーマンスペナルティを理解している行っていますか?
ラリーウォールは、小数点以下の桁数をデフォルトにしてデザイン決定を行い、レターナルとして処理しました。 #perl6のパフォーマンスへの影響について議論しました。いくつかの有用な検索:
私はUへのリンクを見つけた場合私は後でそれらを追加します。
現在のバージョンのPerl 6(Rakudo Star 2017.07)で合理的な問題の1つは、文字列に変換する際のパフォーマンス上の問題があるようです。
私は、CSVファイルをとり、もちろん多くの座標を持つSVG形式のグラフを出力するスクリプトをデバッグするときに気付きました。遅いですが、プロファイリングをするときに、スクリプトがsrc/core/Rational.Strで過度の時間を費やしていたことがわかりました。使用された時間は出力された数値の数に比例しませんでした(ほぼ6000ms近く11000匹のラット)。それらを出力する直前にNumメソッドで浮動小数点数に変換するだけで、スピードアップが大幅に向上しました(ただし、これとは異なる結果になりましたが)。
これは一般的な問題かスクリプト固有のものかどうかはわかりませんが、明らかに修正可能な実装上の欠点ですが、多くの数字を出力するとそれまでは気づいていたことです。
詳細な回答ありがとうraiph –
@RossAttrillよろしくお願いします。 thormickの答えは面白いです。 P6で合併症を使うときにシナリオや他の病理学的な減速に遭遇したら、私は興味がありますか? – raiph