序列化與json效能評測

2021-09-19 11:13:01 字數 3531 閱讀 6017

日常工作中需要在資料庫中儲存一些結構資料,常用的方法有兩種,一是序列化(serialize),二是json格式。

兩者各有優缺點,比如序列化支援物件格式、序列化後的資料會儲存資料型別和資料個數。而json格式相比序列化的資料更短,並且前後端互動時適用性也更好。

但在實際的專案中,應該用哪種格式來儲存資料呢?網上說法不一,老手們更傾向於序列化(可能是因為json格式是在php5.2之後才引進的),而年輕小伙們更傾向於json(可能他們沒聽說過序列化),今天拋開其他的不談,只從效能上看看,哪種格式效能更好。

測試日期:2023年07月23日

測試機:macbook pro(13 英吋,2015 年初期)

cpu:2.7 ghz intel core i5

記憶體:8 gb 1867 mhz ddr3

php版本:php 5.6.15

測試步驟:

1.小資料的序列化和json壓縮

2.小資料的序列化和json解壓縮

3.大資料的序列化和json壓縮

4.大資料的序列化和json解壓縮

測試方法:

每次測試迴圈10次,每個操作迴圈10000次

測試結論在最下面,測試**在最最下面,對資料沒興趣的小夥伴可以直接拉到最下面

測試資料

[1,2,3,4,5,6,7,8,9,0]
序列化

0.013802766799927

0.012701034545898

0.015209913253784

0.012706995010376

0.012805938720703

0.013393878936768

0.013147830963135

0.012894153594971

0.013478994369507

0.012289047241211

json

0.0054340362548828

0.0052530765533447

0.0050327777862549

0.0051569938659668

0.0053970813751221

0.0050327777862549

0.0049920082092285

0.0052528381347656

0.0051090717315674

0.0069460868835449

測試資料

序列化:a:10:

json:[1,2,3,4,5,6,7,8,9,0]

序列化

0.012141942977905

0.012423992156982

0.011405944824219

0.011841058731079

0.011488914489746

0.013920068740845

0.011885166168213

0.01164984703064

0.011460065841675

0.012734889984131

json

0.014571905136108

0.014070987701416

0.015500068664551

0.013802051544189

0.015894174575806

0.014295101165771

0.013956069946289

0.013836145401001

0.014487028121948

0.012983083724976

測試資料

怕影響排版,只放上**,可以複製後檢視

序列化

0.9694550037384

0.98343706130981

0.97917294502258

1.0035130977631

0.9904420375824

1.0137100219727

0.9673900604248

1.0110490322113

0.96677398681641

0.98873591423035

json

1.7659771442413

1.8020439147949

1.7754938602448

1.7524900436401

1.7396509647369

1.716423034668

1.708487033844

1.7435081005096

1.7137379646301

1.724583864212

測試資料

怕影響排版,只放上**,可以複製後檢視

序列化

1.0362830162048

1.0082030296326

1.0194120407104

1.0099349021912

1.0123431682587

1.0072951316833

1.0213930606842

1.0140759944916

1.0116169452667

1.0359060764313

json

4.1445369720459

4.1114408969879

4.0740749835968

4.1012029647827

4.1110889911652

4.0948538780212

4.1167409420013

4.0959279537201

3.9271330833435

3.935909986496

在小資料壓縮方面,json比序列化快了近1倍,而其他方面序列化比json都要快一些,特別是大資料解壓縮這一塊整整快了4倍。

有了這些資料支援,你會怎麼選呢?

反正我是會用json,拿到json之後直接丟給前端或者移動端,讓他們自己去處理吧,理由就是「服務端的效能很寶貴,哈哈哈」

<?php

function ser($data)

return $ret;

}function unser($data)

return $ret;

}function json($data)

return $ret;

}function unjson($data)

return $ret;

}$short = [1,2,3,4,5,6,7,8,9,0];

set_time_limit(0);

$i = 0;

while($i<10)

json序列化與反序列化

1.什麼是序列化與反序列化?序列化就是將記憶體中的資料結構轉換成一種中間格式儲存到硬碟或者基於到網路傳輸。反序列化就是將硬碟中或者網路中傳來的一種資料格式轉換成記憶體中資料格式。2.為什麼要有序列化和反序列化?1.可以儲存程式的執行狀態。比如遊戲中使用者在某個狀態下線,使用者遊戲的資料需要儲存,這時...

JSON序列化與反序列化列舉

一 json序列化與反序列化列舉 1.這個示例使用了乙個jsonconverter定製如何序列化json與反序列化列舉 using system using system.collections.generic using system.linq using system.text using go...

json陣列序列化與反序列化

前台有多組資料以json陣列 引數為modeljson 傳過來需要存入資料庫時 格式如下,每個花括號對應實體類user的相應字段 當以這種形式傳過來時,將其轉為list,再for迴圈進行儲存 listulist jsonutil.tolist modeljson,user.class for use...