我们将使用Doctrine2对Symfony2和使用Doctrine2的ZendFramework2进行基准测试。

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

在裸机测试中,Hello World ZF2的性能比SF2好很多,几乎是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集成的维护者,所以我可能也有兴趣了解有关此主题的更多信息。您有要显示的测试环境吗?

关于performance - 请解释一下Symfony vs Zend Framework 2的性能结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13654886/

10-16 18:21