Php serialisasi vs kinerja json_encode

Jika performa adalah karakteristik mengemudi mutlak Anda, maka tentu saja gunakan yang tercepat. Pastikan Anda memiliki pemahaman penuh tentang perbedaan sebelum Anda membuat pilihan

 

  • JSON mengonversi karakter UTF-8 menjadi urutan escape unicode. serialize() tidak
  • JSON tidak akan memiliki memori tentang apa kelas asli objek itu (mereka selalu dipulihkan sebagai turunan dari stdClass)
  • Anda tidak dapat memanfaatkan __sleep() dan __wakeup() dengan JSON
  • Hanya properti publik yang diserialisasikan dengan JSON
  • JSON lebih portabel

Dan mungkin ada beberapa perbedaan lain yang tidak dapat saya pikirkan saat ini

 

Tes kecepatan sederhana untuk membandingkan keduanya

<?php

ini_set( 'display_errors', 1 );
error_reporting( E_ALL );

//  Make a bit, honkin test array
//  You may need to adjust this depth to avoid memory limit errors
$testArray = fillArray( 0, 5 );

//  Time json encoding
$start = microtime( true );
json_encode( $testArray );
$jsonTime = microtime( true ) - $start;
echo "JSON encoded in $jsonTime seconds<br>";

//  Time serialization
$start = microtime( true );
serialize( $testArray );
$serializeTime = microtime( true ) - $start;
echo "PHP serialized in $serializeTime seconds<br>";

//  Compare them
if ( $jsonTime < $serializeTime )
{
    echo "json_encode() was roughly " . number_format( ($serializeTime / $jsonTime - 1 ) * 100, 2 ) . "% faster than serialize()";
}
else if ( $serializeTime < $jsonTime )
{
    echo "serialize() was roughly " . number_format( ($jsonTime / $serializeTime - 1 ) * 100, 2 ) . "% faster than json_encode()";
} else {
    echo 'Unpossible!';
}

function fillArray( $depth, $max )
{
    static $seed;
    if ( is_null( $seed ) )
    {
    	$seed = array( 'a', 2, 'c', 4, 'e', 6, 'g', 8, 'i', 10 );
    }
    if ( $depth < $max )
    {
    	$node = array();
    	foreach ( $seed as $key )
    	{
    		$node[$key] = fillArray( $depth + 1, $max );
    	}
    	return $node;
    }
    return 'empty';
}

Hasil

JSON dikodekan dalam 0. 057723045349121 detik

PHP serial dalam 0. 064256906509399 detik

json_encode() kira-kira 11. 32% lebih cepat dari serialize()

 

http. //stackoverflow. com/questions/804045/preferred-method-to-store-php-arrays-json-encode-vs-serialize

Format data dapat dipertukarkan dan ini memungkinkan Anda berpindah-pindah antara format data yang berbeda. Transformasi data ini biasanya diperlukan untuk penyimpanan data, transfer, dan komunikasi melalui jaringan di komputer. Dua format data yang paling terkenal adalah JSON, XML, dan CSV. JSON cukup umum akhir-akhir ini karena RESTful API menggunakan JSON, sehingga banyak aplikasi menggunakan data JSON untuk berkomunikasi dengan server

Gambar di bawah ini menunjukkan sekilas komputer yang berkomunikasi dengan server menggunakan data JSON

Php serialisasi vs kinerja json_encode

Banyak bahasa pemrograman menampilkan antarmuka serialisasi bawaan yang menyediakan fitur untuk transformasi data, biasanya khusus untuk bahasa pemrograman. Tidak seperti JSON, XML, dan CSV, data serial berbentuk teks yang disandikan, seperti yang akan kita lihat nanti.  

Pada artikel ini tentang serialisasi PHP vs json_encode, kami akan menjelajahi serialisasi dalam PHP. Kita akan melihat fungsi serialisasi dan membandingkannya dengan json_encode. Jadi, mari kita bergerak maju tanpa penundaan lebih lanjut

Daftar isi

PHP json_encode. Dikunjungi kembali

PHP memiliki fungsi json_encode mengembalikan representasi JSON dari suatu nilai. Cukup sering, array asosiatif PHP diubah menjadi JSON menggunakan fungsi ini. Kami telah melakukan artikel mendalam tentang json_encode, cara mengonversi array ke JSON di PHP

Jadi, kita tidak akan mengulangi dasar-dasarnya di sini, melainkan kita akan melihat contoh array yang diubah menjadi JSON dengan menggunakan fungsi json_encode

<?php
//A user info array
$user_info = array("Id"=>1002,"Name"=>"Sam","isActive"=> true, "Friends"=>array("Natalia","Simon","Bob"));
 
//array_encode converts array into JSON string.
$user_json = json_encode($user_info,JSON_PRETTY_PRINT);
 
print_r($user_json);
 
/*
OUTPUT
{
    "Id": 1002,      
    "Name": "Sam",   
    "isActive": true,
    "Friends": [     
        "Natalia",   
        "Simon",     
        "Bob"        
    ]
}
*/
?>
_

Jadi, Anda baru saja melihat array user_info diserialkan ke dalam format JSON. Dari hasilnya, kami menyadari mengapa JSON adalah format data yang disukai

Mengapa JSON?

  • Dapat dibaca –  JSON dapat dibaca manusia. Anda dapat membacanya dan dengan mudah memahami gagasan tentang apa yang digambarkannya
  • Dapat diedit    – JSON dapat diedit di tempat. Anda selalu dapat mengedit properti yang dapat dibaca manusia, sehingga JSON lebih fleksibel untuk diubah dan diedit
  • Platform Independen – JSON dapat digunakan di berbagai aplikasi dan platform. Hampir setiap bahasa pemrograman memiliki fungsi untuk mem-parsing JSON

Mengingat properti ini, JSON adalah format data yang tepat untuk API. Demikian pula, XML, yang merupakan bahasa markup juga merupakan pilihan yang baik untuk API. Namun, di bagian selanjutnya, kita akan melihat mengapa fungsi serialisasi PHP mungkin bukan pilihan yang baik untuk pengembangan API

Serialisasi PHP vs json_encode. fungsi serialisasi

Serialisasi PHP adalah fungsi bawaan dalam PHP yang mengubah tipe data menjadi representasi aliran byte. Fungsi serialisasi menghasilkan aliran yang disandikan yang membantu PHP untuk mempertahankan nilai dan jenis input asli. Jadi, ketika Anda melakukan kebalikan dari serialisasi, yaitu deserialisasi Anda mendapatkan input asli

Mari kita lihat anatomi fungsi ini sebelum memberikan contoh

Keterangan

Serialisasi PHP menghasilkan representasi nilai yang dapat disimpan

serialize(mixed $value): string

Argumen

  • $value – Nilai yang akan diserialisasi

Jenis Pengembalian

Sebuah string yang berisi representasi byte dari nilai

<?php
//A user info array
$user_info = array("Id"=>1002,"Name"=>"Sam","isActive"=> true, "Friends"=>array("Natalia","Simon","Bob"));
 
//serialize converts array into byte stream.
$user_bytes = serialize($user_info);
 
print_r($user_bytes);
 
/*
OUTPUT
a:4:{s:2:"Id";i:1002;s:4:"Name";s:3:"Sam";s:8:"isActive";b:1;s:7:"Friends";a:3:{i:0;s:7:"Natalia";i:1;s:5:"Simon";i:2;s:3:"Bob";}}
*/
?>

Anda tidak dapat memahami hasilnya karena tidak seperti JSON atau XML, ini tidak dapat dibaca oleh manusia. Seperti yang sudah disebutkan, ini adalah representasi aliran byte. Aliran byte dapat dibaca oleh mesin dan hanya mesin Anda yang dapat menafsirkannya

Output mengungkapkan beberapa kekurangan dari jenis representasi. Alasan mengapa kami tidak dapat menggunakan format data ini di API

  • Tidak Dapat Dibaca – Aliran byte tidak dapat dibaca oleh manusia.  
  • Tidak Dapat Diedit  –  Stream byte tidak dapat diubah atau dimodifikasi secara manual. Anda akan selalu perlu menjalankan ulang kode untuk mengakomodasi perubahan
  • Tergantung platform – Representasi byte bervariasi dari mesin ke mesin. Selain itu, setiap bahasa pemrograman menggunakan algoritma decoding yang berbeda. Jadi, representasi ini mungkin tidak terintegrasi dengan platform lain.  

Mengingat properti ini, representasi byte tidak layak untuk API. Jadi, pertanyaannya adalah mengapa menggunakannya?

Aliran byte ini dapat disimpan ke disk, file, atau database dan kemudian diambil untuk deserialisasi. Alur kerja ini ditunjukkan dalam diagram

Php serialisasi vs kinerja json_encode

Serialisasi PHP vs json_encode. Sebuah perbandingan

Kami telah melihat kedua fungsi ini dan bagaimana perbedaannya. Berikut ini ikhtisar singkat tentang perbedaan antara serialisasi PHP dan json_encode

serializejson_encodeMengembalikan representasi byte dari suatu nilaiMengembalikan representasi JSON dari suatu nilaiFungsi kebalikannya adalah unserializeFungsi kebalikannya adalah json_decodeFungsi serialisasi bawaan bergantung pada platformjson_encode mengembalikan JSON dan JSON adalah platform independen. Aliran byte tidak dapat dibaca manusiaJSON dapat dibaca manusia. serialisasi vs json_encode

Kesimpulan

Dalam serialisasi PHP vs json_encode, kita telah melihat dan membandingkan kedua fungsi tersebut. Secara umum, json_encode banyak digunakan karena kelebihannya. Namun, penting untuk mendapatkan gambaran tentang format data yang berbeda dan bagaimana serialisasi bawaan bekerja di PHP. Kami harap Anda telah mempelajari sesuatu yang baru hari ini. Nantikan artikel PHP menarik lainnya

Ingin menjelajahi lebih banyak tutorial PHP yang bermanfaat?

Kami memiliki banyak artikel menarik yang berhubungan dengan PHP. Anda dapat menjelajahi ini untuk mempelajari lebih lanjut tentang PHP

Cara mengambil input formulir dan memasukkannya ke dalam array asosiatif PHP

Cara memasukkan nilai dalam array asosiatif ke dalam array lain di PHP

Beri tahu jika suatu elemen ada dalam array asosiatif PHP

Pos terkait

Php serialisasi vs kinerja json_encode
Cara mengonversi larik ke JSON di PHP
Php serialisasi vs kinerja json_encode
Cara terbaik untuk menyimpan larik PHP ke sumber data
Php serialisasi vs kinerja json_encode
Cara mengonversi objek JSON ke larik di PHP<
Php serialisasi vs kinerja json_encode
How to merge two JSON objects in PHP


  • ← Cara mengurutkan array asosiatif di PHP
  • Cara keluar dari foreach loop di PHP →

Tulis Kode Lebih Baik Lebih Cepat

Klik di sini untuk mendapatkan rahasia teratas 'Menjadi Rockstar PHP Dev dalam 7 Hari' kami dikirimkan ke kotak masuk Anda

Daftar

Php serialisasi vs kinerja json_encode

Keajaiban Stefanus

Hai. Saya harap Anda menikmati artikel ini. Saya telah mengembangkan situs web dan perangkat lunak secara profesional selama lebih dari 20 tahun. Saya memulai FuelingPHP sebagai cara untuk memberikan kembali kepada komunitas sumber terbuka yang membantu saya dapat hidup dengan nyaman membangun hal-hal yang saya sukai

Apa perbedaan antara serialisasi dan json_encode di PHP?

Keindahannya hampir sama dalam serialize dan json_encode tetapi ada beberapa perbedaan di antara keduanya, di mana serialize spesifik untuk PHP, tetapi json bukan spesifik PHP, universal dan json spesifik . Jika Anda ingin mendukung array Anda, lakukan saja seperti di bawah ini. . If you want to back your array , just do it like as below.

Apa perbedaan antara implode dan json_encode di PHP?

Fungsi implode() memungkinkan Anda menggabungkan elemen array menjadi string tunggal. Untuk melakukan ini, berikan array, dan pembatas ke implode(); . Fungsi json_encode() mengubah array menjadi string JSON .

Apa perbedaan antara json_encode dan Json_decode PHP?

PHP json_decode() dan json_encode(). Ringkasan . Misalnya, objek PHP dapat diubah menjadi file berformat JSON menggunakan fungsi PHP json_encode(). Untuk transformasi sebaliknya, gunakan PHP json_decode() . Array PHP tidak didukung oleh XML tetapi dapat diubah menjadi JSON.

Bagaimana cara membuat serial array ke string di PHP?

Anda dapat mengonversi tipe data PHP apa pun selain sumber daya menjadi string dengan membuat serialisasi. $string = serialize($array); Dan kembali ke bentuk aslinya dengan membatalkan serial lagi. $array = unserialize($string);