请解释Symfony2与ZendFramework2的性能结果



我们正在用Doctrine2对Symfony2进行基准测试,而用Doctrine 2对ZendFramework2进行基准比较。

该测试包括基线Vs的裸露ZF2和SF2 Hello World。相同,但Doctrine2加载了一个简单的对象。我们使用ab,只测量每秒的请求数和每次请求的时间。

在裸框架测试中,Hello World ZF2的表现比SF2好得多,几乎是前者的两倍。

然而,当我们进行同样的测试,但将Doctrine2添加到混合物中时,结果却相反。SF2+D2表现为ZF2+D2的2倍快。

我们有Symfony2和ZendFramework的内部技能,所以我们可以选择其中之一,而且我们不担心RAM的使用,因为我们总是可以获得更多的RAM。但我们确实关心性能,我们需要帮助最好的工具。

一些想法:-我们相信S2正在进行某种缓存-我们认为ZF2 Doctrine2 ORM模块可能是原因-我们不确定在生产中使用什么类型的缓存?APC?Xcache?等

Framework + Doctrine loading an object      
Concurrent:100 / Connections: 1000      
Resp. T ms  Req. Sec
ZF2        60   16
S2         31   32
Framework + Doctrine loading an object      
Concurrent: 25 / Connections: 150       
Resp. T ms  Req. Sec
ZF2         57  17
S2          30  32

======================
Framework Bare      
Concurrent: 100 / Connections: 1000     
Resp. T ms  Req. Sec
ZF2         10.5    94
S2          15.3    65.36       
Framework Bare      
Concurrent: 25 / Connections: 150       
Resp. T ms  Req. Sec
ZF2         10  98
S2          15.4    64

默认情况下,DoctrineORMModule集成没有任何缓存处于活动状态。

您必须在配置中为映射设置缓存:

'doctrine' => [
'driver' => [
'orm_default' => [
'class' => 'DoctrineORMMappingDriverDriverChain',
'drivers' => [],
'cache' => 'apc',
],
],
],

默认缓存为array。否则,每次请求都会解析注释和任何其他类型的映射。

由于我也是ZF2-Doctrine2集成的维护者,我可能也有兴趣了解更多关于这个主题的信息。你有测试环境可以展示吗?

如果操作码(APC)和数据库请求(例如Memcache)缓存得当,Synmfony和Zend之间的区别将微乎其微。

千万不要因为性能差异太小而选择框架。通过缓存和DB改进,您将获得比框架更高的性能。

除非你正在构建一个金融实时应用程序,或者有点像,否则10或20毫秒的响应时间差异算不了什么。网页的平均响应时间通常为100毫秒!

此外,将响应时间转换为"每秒请求数"是没有意义的,尽管我知道这在PHP基准测试中很常见。因为Apache不会按顺序处理请求(一个请求不会消耗100%的CPU),所以同时到达的5个请求将在不到一个请求的5倍时间内得到服务。

正如Ocramius所说,您应该激活元数据缓存:

$frontendOptions = array(
'lifetime' => 7200, // seconds
'automatic_serialization' => true
);
$backendOptions = array(
'cache_dir' => APPLICATION_PATH_CACHE
);
$this->cache = Zend_Cache::factory('Core',
'File',//Memcache is better
$frontendOptions,
$backendOptions);
//ADD a metadata cache for DB, important for perf
Zend_Db_Table_Abstract::setDefaultMetadataCache($this->cache);

相关内容

  • 没有找到相关文章

最新更新