PHP ディープ コピー メソッドの比較: 速度: clone が最も速く、次に json_encode() json_decode() が続きます。メモリ使用量: json_encode() json_decode() が最も少なく、serialize() unserialize() が最も多くなります。信頼性: すべての方法で、元の配列がコピーへの変更の影響を受けないことが保証されます。
#PHP 配列のディープ コピー手法の対決: 速度、メモリ使用量、信頼性
#はじめに # PHP で多次元配列を扱う場合、ディープ コピーは非常に重要です。これは配列の真のコピーを作成し、元の配列に影響を与えずにコピー内の要素を変更する必要がある場合に便利です。この記事では、次の 4 つの一般的な PHP ディープ コピー メソッドを比較します。クローン、$array)
serialize() unserialize()
比較のために、1,000 個の要素を含む多次元配列を作成します。 $array = range(1, 1000); $array[] = ['a', 'b', 'c']; $array[] = ['x' => 1, 'y' => 2];
スピード テスト
各メソッドの実行時間を計測します:
$time = microtime(true); $cloneCopy = clone $array; $microtime = microtime(true) - $time; $time = microtime(true); $arrayMapCloneCopy = array_map(clone, $array); $microtime2 = microtime(true) - $time; $time = microtime(true); $serializeCloneCopy = unserialize(serialize($array)); $microtime3 = microtime(true) - $time; $time = microtime(true); $jsonCloneCopy = json_decode(json_encode($array), true); $microtime4 = microtime(true) - $time;
メソッド 時間 (秒)
##クローン
#array_map(clone, $array) | |
---|---|
| ##serialize() unserialize()
|
| json_encode() json_decode()
|
| #メモリ使用量テスト | memory_get_usage() を使用する
結果: |
| メソッド
クローン
##56,000
##88,000 | |
---|---|
112,000 |
| ##json_encode() json_decode()
64,000 |
|
信頼性テストでは、コピーが変更されても元の配列が変更されないことを確認します :
|