ホームページ  >  記事  >  バックエンド開発  >  Array と SplFixedArray の比較 (コード例)

Array と SplFixedArray の比較 (コード例)

藏色散人
藏色散人転載
2019-05-08 09:23:072699ブラウズ

PHP の本質は配列の使用にあり、配列をうまく使えば、あらゆるデータ構造で使用できます。 SPL と呼ばれる優れた機能があり、これには使用できる多くのデータ構造があり、配列を使用して達成できるパフォーマンスよりもはるかに優れたパフォーマンスが得られます。

今日は、名前が示すように、固定サイズの配列である SplFixedArray を見てみましょう。インスタンス化時に配列サイズを指定します。使用中に配列を拡張または縮小することはできません。

したがって、配列に対して動的操作を実行する場合、その使用は適切ではない可能性があり、SplFixedArray のインデックスは数値のみであり、キー値配列として使用することはできません。

以下は、Array および SplFixedArray の 100W 読み取りおよび書き込みパフォーマンスとメモリ使用量のテストです。

コード

<?php
define(&#39;TEST_COUNT&#39;, 1000000);
$memory = memory_get_usage();
$writeTime = microtime(true);
$arr = [];
for($i = 0; $i < TEST_COUNT; ++$i)
{
    $arr[] = $i;
}
$writeTime = microtime(true) - $writeTime;
 
$readTime = microtime(true);
for($i = 0; $i < TEST_COUNT; ++$i)
{
    $value = $arr[$i];
}
$readTime = microtime(true) - $readTime;
$memory = memory_get_usage() - $memory;
echo &#39;[Array]&#39;, PHP_EOL, &#39;Memory: &#39;, $memory, &#39; bytes&#39;, PHP_EOL, &#39;Write Time: &#39;, $writeTime, &#39;s&#39;, PHP_EOL, &#39;Read Time: &#39;, $readTime, &#39;s&#39;, PHP_EOL;
 
$memory = memory_get_usage();
$writeTime = microtime(true);
$splFixedArray = new SplFixedArray(TEST_COUNT);
for($i = 0; $i < TEST_COUNT; ++$i)
{
    $splFixedArray[$i] = $i;
}
$writeTime = microtime(true) - $writeTime;
 
$readTime = microtime(true);
for($i = 0; $i < TEST_COUNT; ++$i)
{
    $value = $splFixedArray[$i];
}
$readTime = microtime(true) - $readTime;
$memory = memory_get_usage() - $memory;
echo &#39;[SplFixedArray]&#39;, PHP_EOL, &#39;Memory: &#39;, $memory, &#39; bytes&#39;, PHP_EOL, &#39;Write Time: &#39;, $writeTime, &#39;s&#39;, PHP_EOL, &#39;Read Time: &#39;, $readTime, &#39;s&#39;, PHP_EOL;

実行結果

[Array]
Memory: 33558608 bytes
Write Time: 0.083034038543701s
Read Time: 0.022516965866089s
[SplFixedArray]
Memory: 16003208 bytes
Write Time: 0.037343978881836s
Read Time: 0.022947072982788s

結論

メモリ使用量: SplFixedArray は Array より半分以上のメモリを節約できます

書き込みパフォーマンス: SplFixedArray の方が高速ですArray# よりも

##読み取りパフォーマンス: 50/50、多くのテストの後、配列の読み取り速度はさらに高速です

インデックス配列のみを使用する必要があると判断でき、インデックス配列を予測できる場合配列のメンバーの数を指定するには、SplFixedArray を使用する方が明らかに適しています。

以上がArray と SplFixedArray の比較 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyurunsoft.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。