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

Aly*_*Aly 5 php json zend-framework

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

提前致谢.

再见.

myl*_*smg 6

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

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

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

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


Aly*_*Aly 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;
Run Code Online (Sandbox Code Playgroud)

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

我明白了

Native php

time 2.24236011505 memory 158072832

Zend

time 3.50552582741 memory 109051904
Run Code Online (Sandbox Code Playgroud)

  • 每个人都应该认真考虑在这里进行自己的性能测试.`Zend_Json`内部使用`json_encode`和`json_decode`为好,只有当你打开`Zend_Json :: $ useBuiltinEncoderDecoder`你衡量真正实施的非原生的性能,这是非常非常糟糕(6〜8倍,通过我们的慢这里测量). (2认同)

Jon*_*nah 4

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