8

現在、私のアプリは約 7 MB のメモリを使用しています。

でサイズを確認すると、アレイは 700 KB を使用しているように見えますstrlen(serialize($array))))

  • アプリ内でこの配列を使用し、( を使用してmemory_get_peak_usage()) メモリ使用量を確認すると、14 MB になります。

  • 使用しない場合は、7 MB になります。

この配列がシリアル化されて 700 KB かかる場合、なぜ PHP はこの変数に 7 MB を必要とするのでしょうか? それとも、ベンチマークを間違った方法で行っていますか?

4

2 に答える 2

10

これが気になる場合は、PHP から離れたいと思います: http://nikic.github.com/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html。PHP 配列は生活空間のようなものです。

可能な場合は を使用できますがSplFixedArray、PHP 配列が占めるスペースを気にする人はいません。クリーン/パフォーマンスのものを探しているなら、そもそもなぜPHPを使用しているのですか(はい、これはPHPの人から来ています):)

于 2012-08-11T23:36:33.690 に答える
1

シリアル化された形式は、オブジェクトがメモリ内に存在し、完全にアクセス可能である必要がないため、メモリの最適化を行うことができます。それらはデータの整合性を維持するだけであり、アクセス可能性は維持しません。これがあなたの質問に少し答えるのに役立つなら。

于 2012-08-12T09:03:23.730 に答える