php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #51267 Performance of serialize() is poor compared to json_encode()
Submitted: 2010-03-11 01:30 UTC Modified: -
Votes:11
Avg. Score:4.3 ± 1.0
Reproduced:8 of 9 (88.9%)
Same Version:6 (75.0%)
Same OS:2 (25.0%)
From: jo at feuersee dot de Assigned:
Status: Open Package: Arrays related
PHP Version: 5.3.2 OS:
Private report: No CVE-ID:
Have you experienced this issue?
Rate the importance of this bug to you:

 [2010-03-11 01:30 UTC] jo at feuersee dot de
Description:
------------
The performance of serialize() decreases if the data is deeply nested, eg. consists of array inside an array.
Surprisingly, json_encode() is not affected by this issue, thus I'd say there should be some optimizations not used in serialize()

serialize() performs great on arrays structured (key => val), but fails ion structs like

array(
    array(key => val)
    ...
)

Test script:
---------------
Benchmark json_encode() vs. serialize() on the following data:

$arr = array();
for($i = 0; $i < $num_size; $i++) {
	$arr[md5($i)] = array(
		sha1($i),
		SplFixedArray::fromArray(
			array_fill(
				0, 10, hash('sha256', rand(0, $num_size))
			)
		)
	);
}


Expected result:
----------------
More or less the same same time comsumed.

Actual result:
--------------
json_encode() is >3 times faster than serialize().
This increases if the arrays nesting level increases.

Patches

Add a Patch

Pull Requests

Add a Pull Request

 
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Wed Apr 23 09:02:23 2014 UTC