首頁 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 性能測試

今天偶然在想,如果用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.';
?>
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用Docker進行容器的效能測試和壓力測試 如何使用Docker進行容器的效能測試和壓力測試 Nov 07, 2023 pm 04:53 PM

如何使用Docker進行容器的效能測試和壓力測試,需要具體程式碼範例引言容器虛擬化技術的興起使得應用程式的部署和運行更加靈活和高效,其中最受歡迎的工具之一就是Docker。作為一種輕量級的容器化平台,Docker提供了一種方便的方式來打包、分發和運行應用程序,但是如何對容器的性能進行測試和評估,特別是在高負載情況下的壓力測試,是很多人關心的問題。本文將介紹

Go語言中的效能測試與單元測試的差異 Go語言中的效能測試與單元測試的差異 May 08, 2024 pm 03:09 PM

效能測試評估應用程式在不同負載下的效能,而單元測試驗證單一程式碼單元的正確性。效能測試著重於測量反應時間和吞吐量,而單元測試則關注函數輸出和程式碼覆蓋率。性能測試透過高負載和並發模擬實際環境,而單元測試在低負載和串行條件下運行。效能測試的目標是識別效能瓶頸和最佳化應用程序,而單元測試的目標是確保程式碼正確性和健全性。

Nginx負載平衡的效能測試與調優實踐 Nginx負載平衡的效能測試與調優實踐 Oct 15, 2023 pm 12:15 PM

Nginx負載平衡的效能測試與調優實務概述:Nginx作為高效能的反向代理伺服器,常用於負載平衡的應用場景。本文將介紹如何進行Nginx負載平衡的效能測試,並透過調優實務提升其效能。效能測試準備:在進行效能測試之前,我們需要準備一台或多台具備較好效能的伺服器,安裝Nginx,並設定反向代理與負載平衡。測試工具選擇:為了模擬真實的負載情況,我們可以使用常見

Java開發:如何使用JMH進行效能測試和基準測試 Java開發:如何使用JMH進行效能測試和基準測試 Sep 20, 2023 pm 02:00 PM

Java開發:如何使用JMH進行效能測試和基準測試引言:在Java開發過程中,我們經常需要測試程式碼的效能和效率。為了準確評估程式碼的效能,我們可以使用JMH(JavaMicrobenchmarkHarness)工具,它是專為Java開發者設計的一款效能測試和基準測試的工具。本文將介紹如何使用JMH進行效能測試和基準測試,並提供一些具體的程式碼範例。一、什

如何實現MySQL底層最佳化:效能測試與調優工具的進階使用與分析 如何實現MySQL底層最佳化:效能測試與調優工具的進階使用與分析 Nov 08, 2023 pm 03:27 PM

如何實現MySQL底層最佳化:效能測試和調優工具的進階使用與分析引言MySQL是一種常用的關聯式資料庫管理系統,廣泛應用於各種Web應用和大型軟體系統中。為了確保系統的運作效率和效能,我們需要進行MySQL的底層最佳化。本文將介紹如何使用效能測試和調優工具進行進階使用和分析,並提供具體的程式碼範例。一、效能測試工具的選擇和使用效能測試工具是評估系統效能和瓶頸的重要

Golang函數並發程式設計中效能測試的方法 Golang函數並發程式設計中效能測試的方法 Apr 17, 2024 pm 10:09 PM

在Go語言中,透過對函數進行並發調用,可以提高程式效能。為了評估這種效能提升,可以使用基準測試機制:基準測試:使用內建機制測量函數執行時間,例如funcBenchmarkConcurrentFunction。實戰案例:例如,對計算斐波那契數的函數進行並發效能測試,如funcBenchmarkFibonacciConcurrent。分析結果:基準測試可以顯示並發計算相對於串列運算的效能提升,如斐波那契數計算中快了約21,311奈秒。

紅魔鬼9 Pro深度性能測試:它提前結束了性能競賽 紅魔鬼9 Pro深度性能測試:它提前結束了性能競賽 Feb 03, 2024 pm 04:35 PM

在不得不說,在這個日趨同化的手機市場中,紅魔鬼確實是個相當獨特的異樣存在。在整個遊戲手機品類,都因為高通驍龍的能耗比提升而苦苦掙扎的時候,紅魔倒是始終堅持著自己的一套產品理念,直板機身加主動散熱,要的就是一個性能釋放拉滿。在整個行業的旗艦手機,都因為不斷堆料的影像模組而變得越來越駝背時,紅魔居然真的就給你玩純平後攝設計,這甚至可能是近四五年來,整個手機市場上僅此一家的產品。 (圖源:紅魔鬼)最重要的是,作為網友意見的集大成者,紅魔真的成功吸引了一批擁躉,在幾家大廠的子品牌旗艦賣到3000元左右時,這

Vue開發建議:如何進行效能測試和效能調優 Vue開發建議:如何進行效能測試和效能調優 Nov 22, 2023 pm 12:01 PM

在Vue開發中,效能是一個非常重要的問題。如果我們能夠開發出性能出色的應用,對於用戶的用戶體驗和市場競爭力都有很大的提升。而要實現這一點,我們需要進行效能測試和效能調校。本文將介紹如何進行效能測試和效能調校。一、效能測試效能測試是提升應用效能的關鍵。它可以偵測出應用中造成效能問題的因素,進而最佳化。要進行效能測試,我們可以採用以下方法:1.基準測試基準測試是

See all articles