PHP 配列のディープ コピー手法の対決: 速度、メモリ使用量、信頼性

WBOY
リリース: 2024-05-03 13:45:02
オリジナル
885 人が閲覧しました

PHP ディープ コピー メソッドの比較: 速度: clone が最も速く、次に json_encode() json_decode() が続きます。メモリ使用量: json_encode() json_decode() が最も少なく、serialize() unserialize() が最も多くなります。信頼性: すべての方法で、元の配列がコピーへの変更の影響を受けないことが保証されます。

PHP 配列のディープ コピー手法の対決: 速度、メモリ使用量、信頼性

#PHP 配列のディープ コピー手法の対決: 速度、メモリ使用量、信頼性

#はじめに # PHP で多次元配列を扱う場合、ディープ コピーは非常に重要です。これは配列の真のコピーを作成し、元の配列に影響を与えずにコピー内の要素を変更する必要がある場合に便利です。この記事では、次の 4 つの一般的な PHP ディープ コピー メソッドを比較します。クローン、$array)

serialize() unserialize()

    json_encode() json_decode()
  • 実用的なケース比較のために、1,000 個の要素を含む多次元配列を作成します。
  • $array = range(1, 1000);
    $array[] = ['a', 'b', 'c'];
    $array[] = ['x' => 1, 'y' => 2];
    ログイン後にコピー
  • スピード テスト
  • Use
  • microtime() 各メソッドの実行時間を計測します:
    $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;
    ログイン後にコピー
結果:


メソッド 時間 (秒)

##クローン

##8.9e-62.1e-58.1e-54.7e-5memory_get_usage() を使用する 各メソッドのメモリ使用量を測定します:
$memory = memory_get_usage();
$cloneCopy = clone $array;
$memory2 = memory_get_usage() - $memory;

$memory = memory_get_usage();
$arrayMapCloneCopy = array_map(clone, $array);
$memory3 = memory_get_usage() - $memory;

$memory = memory_get_usage();
$serializeCloneCopy = unserialize(serialize($array));
$memory4 = memory_get_usage() - $memory;

$memory = memory_get_usage();
$jsonCloneCopy = json_decode(json_encode($array), true);
$memory5 = memory_get_usage() - $memory;
ログイン後にコピー
メソッドメモリ使用量(バイト)
#array_map(clone, $array)
##serialize() unserialize()
json_encode() json_decode()
#メモリ使用量テスト
結果:


クローン

##56,000

#array_map(clone, $array)##88,000serialize() unserialize()##json_encode() json_decode()信頼性テスト
112,000
64,000
信頼性テストでは、コピーが変更されても元の配列が変更されないことを確認します :
$cloneCopy[0] = 100;
$arrayMapCloneCopy[0] = 100;
$serializeCloneCopy[0] = 100;
$jsonCloneCopy[0] = 100;

echo $array[0]; // 输出:1
assert($array[0] == 1);
ログイン後にコピー

以上がPHP 配列のディープ コピー手法の対決: 速度、メモリ使用量、信頼性の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート