PHP檔案快取效率測試

2021-08-30 20:46:08 字數 1768 閱讀 4776

php檔案快取內容儲存格式主要有三種:

1.變數 var_export 格式化成php正常的賦值書寫格式,用的時候直接include檔案

2.變數 serialize 序列化之後儲存,用的時候反序列化

3,變數 json_encode格式化之後儲存,用的時候json_decode

一直以來,我都以為第一種效率最高,因為那是php指令碼直譯器解析php指令碼的格式,原生的,應該最快,至少讀取快取的效率應該是最高的,可是今天做了個測試,令我大跌眼鏡!原來 serialize序列化效率才是最高的,不論是讀還是寫!

下面是用來測試的php**:

view plaincopy to clipboardprint?

$st = microtime(1);  

for ($i=0;$i<1000;$i++)  

echo "include讀:".(microtime(1)-$st)." ";  

$st = microtime(1);  

for ($i=0;$i<1000;$i++)  

echo "serialize寫:".(microtime(1)-$st)." ";  

$st = microtime(1);  

for ($i=0;$i<1000;$i++)  

echo "serialize讀:".(microtime(1)-$st)." ";  

$st = microtime(1);  

for ($i=0;$i<1000;$i++)  

echo "json寫:".(microtime(1)-$st)." ";  

$st = microtime(1);  

for ($i=0;$i<1000;$i++)  

echo "json讀:".(microtime(1)-$st)." "; 

$st = microtime(1);

for ($i=0;$i<1000;$i++)

echo "include讀:".(microtime(1)-$st)." ";

$st = microtime(1);

for ($i=0;$i<1000;$i++)

echo "serialize寫:".(microtime(1)-$st)." ";

$st = microtime(1);

for ($i=0;$i<1000;$i++)

echo "serialize讀:".(microtime(1)-$st)." ";

$st = microtime(1);

for ($i=0;$i<1000;$i++)

echo "json寫:".(microtime(1)-$st)." ";

$st = microtime(1);

for ($i=0;$i<1000;$i++)

echo "json讀:".(microtime(1)-$st)." ";

結果太神奇了!include寫:0.559882879257include讀:0.185745000839serialize寫:0.255033969879serialize讀:0.0853068828583json寫:0.284864902496json讀:0.145938873291 序列化是最快,無論讀或寫,都是第一種的效率的兩倍,json比序列化效率稍低,表現還可以!如果撇開檔案讀寫所耗費的時間,他們的效率差別可能會更大!include那個,雖然是php指令碼賦值的格式,但是也是要分析解析文字,php指令碼直譯器需要動用整個直譯器分析php指令碼,而序列化不需要,只用啟用序列化文字分析就行了,所以效率更高。

PHP檔案快取效率測試

php檔案快取內容儲存格式主要有三種 1.變數 var export 格式化成php正常的賦值書寫格式,用的時候直接include檔案 2.變數 serialize 序列化之後儲存,用的時候反序列化 3,變數 json encode格式化之後儲存,用的時候json decode 一直以來,我都以為第...

PHP檔案快取效率測試(一)

php檔案快取內容儲存格式主要有三種 1.變數 var export 格式化成php正常的賦值書寫格式,用的時候直接include檔案 2.變數 serialize 序列化之後儲存,用的時候反序列化 3,變數 json encode格式化之後儲存,用的時候json decode 一直以來,我都以為第...

PHP檔案快取的效能測試

前言 在開發moophp的過程中,為了尋找更為高效的快取方式,對兩種最常用的快取方式進行了測試。php常用快取方式 第一種,把需要快取的資料進行處理,形成php可以直接執行的檔案。在需要快取資料的時候,通過include方式引入,並使用。第二種,把需要的資料通過serialize函式序列化後直接儲存...