Rumah php教程 php手册 PHP中json_encode、json_decode与serialize、unserialize的性能

PHP中json_encode、json_decode与serialize、unserialize的性能

Jun 06, 2016 pm 08:34 PM
json_encode serialize Ujian prestasi

今天偶然在想,如果用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.';
?>
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan Docker untuk ujian prestasi dan ujian tekanan bekas Cara menggunakan Docker untuk ujian prestasi dan ujian tekanan bekas Nov 07, 2023 pm 04:53 PM

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

Cara melaksanakan pengoptimuman asas MySQL: Penggunaan lanjutan dan analisis alat ujian dan penalaan prestasi Cara melaksanakan pengoptimuman asas MySQL: Penggunaan lanjutan dan analisis alat ujian dan penalaan prestasi Nov 08, 2023 pm 03:27 PM

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

Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go May 08, 2024 pm 03:09 PM

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.

Ujian prestasi mengimbangi beban Nginx dan amalan penalaan Ujian prestasi mengimbangi beban Nginx dan amalan penalaan Oct 15, 2023 pm 12:15 PM

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

Nasihat pembangunan Vue: Cara melakukan ujian prestasi dan penalaan prestasi Nasihat pembangunan Vue: Cara melakukan ujian prestasi dan penalaan prestasi Nov 22, 2023 pm 12:01 PM

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 Pembangunan Java: Cara menggunakan JMH untuk ujian prestasi dan penanda aras Sep 20, 2023 pm 02:00 PM

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

Ujian prestasi mendalam Red Magic 9 Pro: ia menamatkan persaingan prestasi lebih awal Ujian prestasi mendalam Red Magic 9 Pro: ia menamatkan persaingan prestasi lebih awal Feb 03, 2024 pm 04:35 PM

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

Kaedah ujian prestasi dalam pengaturcaraan serentak fungsi Golang Kaedah ujian prestasi dalam pengaturcaraan serentak fungsi Golang Apr 17, 2024 pm 10:09 PM

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.

See all articles