我们使用Doctrine2对Docmine2和ZendFramework2对Symfony2进行基准测试. 对于基线Vs,测试包括裸ZF2和SF2 Hello World.同样但是Doctrine2加载了一个简单的对象.我们使用ab并仅测量每秒请求和每个请求的时
对于基线Vs,测试包括裸ZF2和SF2 Hello World.同样但是Doctrine2加载了一个简单的对象.我们使用ab并仅测量每秒请求和每个请求的时间.
在裸框架测试期间,Hello World ZF2的性能比SF2好近2倍.
然而,当我们进行相同的测试但是将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' => 'Doctrine\ORM\Mapping\Driver\DriverChain', 'drivers' => [], 'cache' => 'apc', ], ], ],
默认缓存为array
.否则,每次请求都会解析注释和任何其他类型的映射.
由于我也是ZF2-Doctrine2集成的维护者,我可能也有兴趣了解有关此主题的更多信息.你有一个测试环境要展示吗?