2017-03-22 5 views
1

浮動小数点数がPHP5でどれくらいのメモリを占めているかチェックしたいと思います。私はmemory_get_usage()はあまり信頼できないと読んでいます。PHPで浮動小数点数を取得する

私はこれを使って浮動小数点のサイズを調べました。新しい浮動小数点数を作成するたびに、メモリ使用量は168バイト増加します。私はこれが大きすぎると思ったので、私の質問は - この数字はどれくらい信頼できるのですか?浮動小数点数のサイズを近似する良い方法はありますか?

私のサーバーのOSはUbuntu 14.04です。

答えて

3

memory_get_usage()は、プログラムの変数とこれらの変数の内部的な保存を保存するためにPHPが使用するメモリ量を返します。

memory_get_usage()によって返される値と、スクリプトによって処理される実際の値を格納するために使用されるメモリの量の間に直接のリンクはありません。

PHP変数には型がないため、各変数は任意の型の値を格納できるデータ構造体を使用します。これは、bool値の1ビットペイロードの場合でも、PHPは大量のメモリを使用していることを意味しています(おそらく、測定した168バイト)。

配列は、配列、ハッシュ、ダブルリンクリストの構造と機能を混在させる複合型なので、値が配列の一部である場合はさらに大きくなります。これらの異なるデータ構造の機能を提供するために、配列型は格納するオブジェクト間のリンクを保持し、これらのリンクもメモリを使用します。

PHP 7は、それが内部的にそのデータを格納する方法を変更して、あなたはどのように知りたい場合は平均的で、それは、しかし、PHP 5

によって使用されるメモリの約半分にメモリ使用量を削減しました多くのバイトが(可能な値、FEのその範囲を知るために)実際の浮動小数点値を格納するために使用され、情報はで提供されdocumentation page of the float type

floatの大きさがあるが、プラットフォームに依存しています最大約1.8e308の精度で約14桁の10進数が一般的な値(64ビットIEEE形式)です。

I「はプラットフォームに依存」と仮定し、それが32ビットプラットフォーム(floatための伝統的な大きさ)と、64ビットより大きなプラットフォーム(従来double)上の8バイトに4つのバイトを使用します。

+0

ありがとうございます!私がPHP5専用ライブラリを使用していることは残念です。私はPHP7を使って自分のプロセスを試しました。残念ながら、私はPHP5に対応する必要があります。再度、感謝します! :) – MemoNick

関連する問題