json_encode / json_decode vs Zend_Json :: encode / Zend_Json :: decode

时间:2010-12-09 19:48:07

标签: php json zend-framework

你知道什么是性能和内存消耗的最佳方式?

提前致谢。

再见。

3 个答案:

答案 0 :(得分:6)

功能的唯一区别如下(根据Zend Framework文档):

  

当在要编码的对象上实现方法toJson()时,Zend_Json调用此方法并期望该对象返回其内部状态的JSON表示。

除此之外没有任何差异,如果安装了json扩展,它会自动选择使用PHP的json_encode功能。从他们的文档再次:

  

如果未安装ext / json,则使用PHP代码中的Zend Framework实现进行解码。这比使用PHP扩展要慢得多,但行为完全相同。

答案 1 :(得分:5)

$memoryNativeStart = memory_get_peak_usage (true);
$start = microtime( true );
$native = json_decode(json_encode( $data ));
$memoryNative =  memory_get_peak_usage (true) - $memoryNativeStart;
$jsonNativeTime = microtime( true ) - $start;
$msgNative = 'Native php <br>';
$msgNative .= 'time '.$jsonNativeTime.' memory '.$memoryNative.'<br>';

echo $msgNative;

sleep(3);

$memoryZendStart = memory_get_peak_usage (true);
$start = microtime( true );
$zend = Zend_Json::decode(Zend_Json::encode( $data ));
$memoryZend =  memory_get_peak_usage (true) - $memoryZendStart;
$jsonZendTime = microtime( true ) - $start;
$msgZend = 'Zend <br>';
$msgZend .= 'time '.$jsonZendTime.' memory '.$memoryZend;

echo $msgZend;

内部数据大约有130,000条记录(结果集)

我得到了

Native php

time 2.24236011505 memory 158072832

Zend

time 3.50552582741 memory 109051904

答案 2 :(得分:4)

Zend_Json就是为了能够更好地集成到OO环境中。至于性能,我认为json_encode / decode会更快一些,因为它们是内置函数的(意味着它们不是用PHP编写的)。