2016-07-07 10 views
2

これはPHPでのメモリ使用量に関する質問です。PHP - クラス定数はメモリのグローバル定数と異なるのですか?

  • クラス定数は、メモリ使用に関してグローバルに宣言された定数とは異なりますか?
  • クラス内で宣言された定数を静的に参照すると、より多くのメモリが必要ですか?
  • クラス内の定数を静的に参照する場合、クラスサイズ(プロパティとメソッドのサイズは&のサイズ)はまったく重要ですか?定数
  • 明確にするために

、クラス:

class Example {  
    const foo = 'bar'; 
} 

グローバル定数:

define('foo', 'bar'); 

答えて

0

私はこの考えていないが、良い質問ですありません。

少し検索すると、memory_get_usageが実行される前に、memory_get_usage()を使用して、使用しているメモリを確認できることがわかりました。

だから、それを試してみてください。だから、あなたがしますSEどのようにメモリの変更や変更が使用したメモリであること

echo memory_get_usage()."\n"; 
class Example {  
    const foo = 'bar'; 
} 
echo memory_get_usage()."\n"; 
define('foo', 'bar'); 
echo memory_get_usage(); 

はこれを行います。私はクラスのコメント場合のでだから、違いは、定数が事前に割り当てられていることである349872

まずエコー:349840
第2のエコー:349840
サードエコー

私はこれを得ました最後まで、私はこの記憶を得る348664

ので、空のスクリプト:348664、唯一のクラスで:349840、唯一のグローバル定数:348976.

空のスクリプト:0
クラス:1176
グローバル定数:312

ので、そこに大きな違いです。

+0

人々は[類似のテスト](https://secure.php.net/manual/en/language.oop5.constants.php#113559)を試みましたが、結果は確定的ではありません。ページングが原因である可能性があります。 – mae

+0

はい、あらかじめ割り当てていますので、クラスがなくても "ゼロ"の参照を取得してから、その違いを見ていなければなりません。興味深いもの: – matiaslauriti

+0

したがって、クラスが宣言された後、定数(例: '' 'Example :: foo'''など)はメモリ使用に影響を与えません。 – mae

関連する問題