1

PHP では、1 つの整数を格納するのに約 213 バイトが必要なようですが、本当ですか? 次のコードを見てください。

$N = 10000;
echo memory_get_usage()."\n";
$v = array();
for($i = 0; $i < $N; $i++) {
    $v[] = $i;
}
echo memory_get_usage()."\n";
unset($v);
echo memory_get_usage()."\n";

出力は次のとおりです。

641784
2773768
642056

したがって、違いは 2773768 - 641784 = 2131984 バイト、つまり整数あたり 213 バイトです。なぜそんなに?4 バイトで十分です。

4

1 に答える 1

3

4バイトで十分なのは、整数値をメモリのどこかに格納するだけで、データ型の識別が必要な変数であるという事実を考慮せずに、その変数への他の参照があるかどうかを示すフラグ、その変数など、すべて追加のメモリが必要です。

PHPは値をzval*に格納するため、実際の値に加えて、zvalの詳細を格納するために使用されるすべての追加バイトがあります。

于 2012-06-24T10:37:12.890 に答える