Doctrine真的那么慢吗?

时间:2011-04-06 14:53:58

标签: php performance doctrine

我在我的应用程序中使用了一个Doctrine,但它似乎确实减慢了我的应用程序。像这样的简单代码:

$q = Doctrine_Query::create()
        ->select('co.id')
        ->from('CounterOnline co')
        ->where('co.user_id = ?', $user_id)
        ->orWhere('co.ip = ?', $ip)
        ->limit(1);
$counter_online = $q->fetchOne();

执行时需要0.025206089019775秒。我在我的应用程序中做了很多数据库查询,所以时间是一个糟糕的结果。

Doctrine真的那么慢,或者某种程度上我的配置可能搞砸了?缓存实际上不是一种选择,因为大多数服务器既没有安装memcache也没有安装APC。

2 个答案:

答案 0 :(得分:3)

将查询放入运行查询100次的循环中,并比较执行时间。

如果它线性缩放(即从0.025206秒到2.5206秒),你的数据库或者你的Doctrine安装就会出现问题(而不是Doctrine本身,因为如果那种时间正常,没有人会使用它)。如果可能,请确保您的数据库已正确编入索引和/或标准化。

如果它非线性扩展(即从0.025206秒到0.0292秒),您的应用程序可能连接到远程数据库,而不是本地数据库,并且大部分执行时间是围绕建立该数据库的TCP / IP开销。连接到数据库 - 执行时间的小增量反映了查询本身运行正常。仔细检查应用程序的配置文件,确保它连接到正确的数据库。

答案 1 :(得分:2)

表现可能取决于很多事情:

  • 已编入索引的字段
  • 表格中的数据量
  • 硬件
  • ORM
  • ...

但是,我想对于这样一个简单的查询,问题不应该是Doctrine。