PHP中json_encode、json_decode与serialize、unserialize的性能
今天偶然在想,如果用PHP写一个类似BDB的基于文件的Key-Value小型数据库用于存储非结构化的记录型数据,不知道效率会如何?
于是便联想到PHP中的对象怎么样序列化存储性价比最高呢?接着想到了之前同事推荐的JSON编码和解码函数。
据他所说,json_encode和json_decode比内置的serialize和unserialize函数要高效。
于是我决定动手实验,证实一下同事所说的情况是否属实。
实验分别在PHP 5.2.13和PHP 5.3.2环境下进行。
用同一个变量,分别用以上方式进行编码或解码10000次,并得出每个函数执行10000次所需的时间。
以下是PHP 5.2.13环境其中一次测试结果:
代码如下:
json : 190
serialize : 257
json_encode : 0.08364200592041
json_decode : 0.18004894256592
serialize : 0.063642024993896
unserialize : 0.086990833282471
DONE.
以下是PHP 5.3.2环境其中一次测试结果:
代码如下:
json : 190
serialize : 257
json_encode : 0.062805891036987
json_decode : 0.14239192008972
serialize : 0.048481941223145
unserialize : 0.05927300453186
DONE.
这次实验得到的结论是:
json_encode和json_decode的效率并没有比serialize和unserialize的效率高,在反序列化的时候性能相差两倍左右,PHP 5.3执行效率比PHP 5.2略有提升。
以下是我用来做测试的代码:
代码如下:
$target = array (
'name' => '全能头盔',
'quality' => 'Blue',
'ti_id' => 21302,
'is_bind' => 1,
'demand_conditions' =>
array (
'HeroLevel' => 1,
),
'quality_attr_sign' =>
array (
'HeroStrength' => 8,
'HeroAgility' => 8,
'HeroIntelligence' => 8,
),
);
$json = json_encode($target);
$seri = serialize($target);
echo "json :\t\t" . strlen($json) . "\r\n";
echo "serialize :\t" . strlen($seri) . "\r\n\r\n";
$stime = microtime(true);
for ($i = 0; $i {
json_encode($target);
}
$etime = microtime(true);
echo "json_encode :\t" . ($etime - $stime) . "\r\n";
//----------------------------------
$stime = microtime(true);
for ($i = 0; $i {
json_decode($json);
}
$etime = microtime(true);
echo "json_decode :\t" . ($etime - $stime) . "\r\n\r\n";
//----------------------------------
$stime = microtime(true);
for ($i = 0; $i {
serialize($target);
}
$etime = microtime(true);
echo "serialize :\t" . ($etime - $stime) . "\r\n";
//----------------------------------
$stime = microtime(true);
for ($i = 0; $i {
unserialize($seri);
}
$etime = microtime(true);
echo "unserialize :\t" . ($etime - $stime) . "\r\n\r\n";
echo 'DONE.';
?>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara menggunakan Docker untuk ujian prestasi dan ujian tekanan kontena memerlukan contoh kod khusus Pengenalan Peningkatan teknologi virtualisasi kontena telah menjadikan penggunaan dan pengendalian aplikasi lebih fleksibel dan cekap, dan salah satu alat yang paling popular ialah Docker. Sebagai platform kontena yang ringan, Docker menyediakan cara yang mudah untuk membungkus, mengedar dan menjalankan aplikasi, tetapi bagaimana untuk menguji dan menilai prestasi kontena, terutamanya ujian tekanan di bawah keadaan beban tinggi, Ia adalah persoalan yang ramai orang bimbang. Artikel ini akan memperkenalkan

Bagaimana untuk mencapai pengoptimuman asas MySQL: Penggunaan dan analisis lanjutan bagi ujian prestasi dan alat penalaan Pengenalan MySQL ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan yang digunakan secara meluas dalam pelbagai aplikasi Web dan sistem perisian yang besar. Untuk memastikan kecekapan operasi dan prestasi sistem, kami perlu melaksanakan pengoptimuman asas MySQL. Artikel ini menerangkan cara menggunakan alat ujian dan penalaan prestasi untuk penggunaan dan analisis lanjutan serta menyediakan contoh kod khusus. 1. Pemilihan dan penggunaan alat ujian prestasi Alat ujian prestasi adalah penting untuk menilai prestasi sistem dan kesesakan

Ujian prestasi menilai prestasi aplikasi di bawah beban yang berbeza, manakala ujian unit mengesahkan ketepatan satu unit kod. Ujian prestasi memfokuskan pada mengukur masa tindak balas dan daya pemprosesan, manakala ujian unit memfokuskan pada output fungsi dan liputan kod. Ujian prestasi mensimulasikan persekitaran dunia sebenar dengan beban tinggi dan serentak, manakala ujian unit dijalankan di bawah beban rendah dan keadaan bersiri. Matlamat ujian prestasi adalah untuk mengenal pasti kesesakan prestasi dan mengoptimumkan aplikasi, manakala matlamat ujian unit adalah untuk memastikan ketepatan dan keteguhan kod.

Gambaran keseluruhan ujian prestasi mengimbangi beban Nginx dan amalan penalaan: Sebagai pelayan proksi songsang berprestasi tinggi, Nginx sering digunakan dalam senario aplikasi pengimbangan beban. Artikel ini akan memperkenalkan cara melakukan ujian prestasi pengimbangan beban Nginx dan meningkatkan prestasinya melalui amalan penalaan. Penyediaan ujian prestasi: Sebelum melaksanakan ujian prestasi, kami perlu menyediakan satu atau lebih pelayan dengan prestasi yang baik, memasang Nginx dan mengkonfigurasi proksi terbalik dan pengimbangan beban. Pemilihan alat ujian: Untuk mensimulasikan keadaan beban sebenar, kita boleh menggunakan biasa

Dalam pembangunan Vue, prestasi adalah isu yang sangat penting. Jika kita boleh membangunkan aplikasi dengan prestasi cemerlang, pengalaman pengguna dan daya saing pasaran akan bertambah baik. Untuk mencapai matlamat ini, kita perlu melakukan ujian prestasi dan penalaan prestasi. Artikel ini akan memperkenalkan cara melakukan ujian prestasi dan penalaan prestasi. 1. Ujian prestasi Ujian prestasi adalah kunci untuk meningkatkan prestasi aplikasi. Ia boleh mengesan faktor yang menyebabkan masalah prestasi dalam aplikasi dan kemudian mengoptimumkannya. Untuk menjalankan ujian prestasi, kita boleh menggunakan kaedah berikut: 1. Ujian penanda aras Ujian penanda aras ialah

Pembangunan Java: Cara menggunakan JMH untuk ujian prestasi dan penanda aras Pengenalan: Semasa proses pembangunan Java, kita selalunya perlu menguji prestasi dan kecekapan kod. Untuk menilai prestasi kod dengan tepat, kami boleh menggunakan alat JMH (Java Microbenchmark Harness), yang merupakan alat ujian prestasi dan penanda aras yang direka khas untuk pembangun Java. Artikel ini akan memperkenalkan cara menggunakan JMH untuk ujian prestasi dan penanda aras, serta menyediakan beberapa contoh kod khusus. 1. Apa

Perlu dikatakan bahawa dalam pasaran telefon mudah alih yang semakin homogen ini, Red Magic sememangnya kewujudan yang agak unik dan luar biasa. Walaupun keseluruhan kategori telefon permainan sedang bergelut disebabkan nisbah penggunaan tenaga yang dipertingkatkan Qualcomm Snapdragon, Red Devils sentiasa mematuhi set konsep produk mereka sendiri, dengan badan lurus dan pelesapan haba yang aktif, yang mereka inginkan hanyalah pelepasan prestasi. . Apabila keseluruhan telefon mudah alih utama industri semakin merosot disebabkan pengumpulan berterusan modul pengimejan, Red Devils sebenarnya memberikan anda reka bentuk kamera belakang yang rata Ini malah mungkin menjadi trend pertama dalam keseluruhan industri telefon bimbit pada masa lalu empat atau lima tahun Satu-satunya produk di pasaran. (Sumber: Red Devils) Perkara yang paling penting ialah, sebagai tuan kepada pendapat netizen, Red Devils telah benar-benar berjaya menarik sekumpulan peminat Apabila sub-jenama utama beberapa pengeluar utama menjual sekitar 3,000 yuan, ini

Dalam bahasa Go, prestasi program boleh dipertingkatkan dengan membuat panggilan serentak ke fungsi. Untuk menilai peningkatan prestasi ini, mekanisme penandaarasan boleh digunakan: Penandaarasan: Ukur masa pelaksanaan fungsi menggunakan mekanisme terbina dalam seperti funcBenchmarkConcurrentFunction. Kes praktikal: Contohnya, lakukan ujian prestasi serentak pada fungsi yang mengira nombor Fibonacci, seperti funcBenchmarkFibonacciConcurrent. Keputusan analisis: Ujian penanda aras boleh menunjukkan peningkatan prestasi pengkomputeran serentak berbanding pengkomputeran bersiri Contohnya, pengiraan nombor Fibonacci adalah kira-kira 21,311 nanosaat.
