"When must arbitrary precision arithmetic functions be used in PHP?"
私のサイトでは、PHPでbcmath関数を使用しなければならないことを聞いたことがありません。インターネット上の最大規模のサイトのほとんどはかなりの量のPHPを使用し、2億4,000万を超える"サイトはPHPを使用してコーディングされています。
bcmathは通常、intではなく「long」が必要な状況ではなく、またはintまたはfloatの特定のサイズが問題になる場合ではなく、数値が非常に大きくまたは非常に小さくなる極端な場合に使用されます。
"How much is any size?"
bcmathはメモリによってのみ制限され、実際にはこれは実際の制限ではありません。bcmathを使用した簡単なテストでは、2 ^ 1000000(301,030+桁、100万は7桁のみ)より大きい数値と「0.1-2 ^ 1000000」を処理できることを示しています。
パフォーマンスに関する限り、bcmathは高速ですが、大量のメモリを消費する可能性があります。これは基本的に、ペンインパッドを使用して(人間として)行うのと同じ方法で数値を計算します。現実的な数値は数百ステップで処理でき、通常は数ミリ秒の時間しかかかりません。しかし、これらの「数百」の文字列コピーはメモリに追加されます。上記の数値(2 ^ 1000000)は計り知れないほど大きく、かなり古いノートパソコンの処理には2〜3秒かかります。
"Is it really necessary?"
要するに、はい、しかし非常にまれです。
たとえば、SHA-1ハッシュは実際には数値であり、文字列ではありません。SHA-1を使用した最大可能数は2 ^ 160、つまり1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976です。ネイティブデータタイプを使用してこのような数値を処理する方法はありません。分散アルゴリズムでは、SHA-1ハッシュ(数値として)の処理はかなり一般的です。
繰り返しになりますが、これはまれですが、必要な場合、システムや好みのフレームワークに関係なく、実際に代用するものはありません。
"Advise"
bcmathは、必要なものであることがわかっている場合、または単に数値で遊んで楽しむ場合を除いて、使用しないでください。それは何も壊さず、顕著なパフォーマンスの問題を引き起こすべきではありませんが、ほとんどの問題はPHPの標準データ型を使用して解決できます。