【问题标题】:PHP best orm in terms of performance? [closed]PHP 在性能方面最好还是? [关闭]
【发布时间】:2012-05-30 20:13:33
【问题描述】:

就性能而言,哪一个是 PHP 的最佳 ORM?我也想在 Codeigniter 框架中使用它。我现在正在尝试 php-activerecord,它的表现还不错。我看了 Doctrine2、DataMapper 之类的东西,但在我建立一个大项目之前,我无法说出任何关于性能的东西(那时,改变主意为时已晚)。

有什么想法吗?

【问题讨论】:

  • @deceze 来吧,让这个人休息一下。这很难研究,他已经解释了为什么在他花了很多时间围绕选定的架构构建它之前无法评估他的特定用例。
  • @Jannie 当然,我完全同意这一点。但是这个问题根本不适合 SO。只看结果:三个响应,基本上包含四个答案。按照这个速度,他无论如何都必须根据自己的情况做出主观决定。
  • 这是一个实用的php-orm-benchmark 结果,您也可以在自己的环境中尝试。
  • Maghead ORM 现在是最快的一种,它生成纯 PDO 方法代码以提高性能。它非常快,几乎接近 PDO 代码。 github.com/c9s/forked-php-orm-benchmarkgithub.com/maghead/maghead

标签: php performance codeigniter orm


【解决方案1】:

如果您的目标是性能,那么一开始就使用 ORM 是错误的选择。

ORM 专注于强制关系结构像对象一样工作,这是问题的根源(性能损失和 API 限制)。这就是为什么 ORM 不关注性能的原因。 ORM 真正擅长的是快速原型设计,但在大型项目中使用时,它们通常最终会导致 technical debt

另外 .. 如果您对使用 CodeIgniter 很认真,请阅读the source,然后决定是否这是您项目所基于的代码质量。

附:这里有两篇文章你可能会觉得有点煽动,但有相关的观点:

【讨论】:

  • 是的,我以前使用过 CI,它很棒,正是我需要的。正如上面的评论所述,重点是:是的,我知道有开销。但考虑到开销,我想知道哪个 ORM 的最小 :)
  • @Sixpounder ,如果您在模型层中使用 Data Mapper 实例,最小的开销将是(不要与 CI 的 ORM 混淆,同名,它实现了 Active Record 模式)。这不仅会使整个过程更快更灵活,而且还可以减少模型层内部的耦合(是的,一个合适的模型是一个层,而不是一个类)。哦..我没有问你之前有没有用过CI..我建议你阅读它的来源。
  • 是的,几个月前我已经阅读了源代码 :) 感谢您的回复!
  • @Sixpounder ,在这种情况下,我建议您观看clean code talks 讲座系列,以获得一些观点。
【解决方案2】:

Here is a link to GAS ORM vs PHP Active Record (滚动到底部)

结果? Gas ORM 比 PHP Active Record 更高效

【讨论】:

  • ORM 不应用作“模型”。此外,项目的官方存储库似乎已从 GitHub 上消失。
  • 他所要求的只是哪个 Codeigniter ORM 在性能方面最好 - 这就是我的回答(在两个选项之间)
【解决方案3】:

当您开始一个新项目时,您可以快速将对象从数据库中取出,而不必担心您是如何操作的。您还可以非常快速地将 DBMS 从本地开发机器上的 SQLite 切换到测试或临时服务器上的 MySQL。当性能部分开始时,您的应用程序已经成熟了一点,模型有些固定并且程序逻辑正在运行。将模型扩展为使用 SQL 而不是 ORM 会更方便,因为项目的结构不再变化(如此之快)。

我建议教义。

Doctrine 可以轻松集成到 CI 中(互联网上有很多帖子,甚至在 SO 上也有一些帖子),因此您不必学习任何花哨的新约定。

无论您选择什么,请记住,任何 ORM 都会为非常轻量级的框架增加大量(与 CI 的基本占用空间相比)开销。所以你牺牲了轻量级来换取强大的数据库功能和更多的抽象。

检查这个链接,我发现它提供了非常好的信息 http://www.phpandstuff.com/articles/codeigniter-doctrine-from-scratch-day-1-install-and-setup

【讨论】:

  • 显然切换 DBMS 不会有问题,但切换库(并在短时间内编写更多代码)可能会出现问题。我也喜欢教义,而且我知道我选择的任何形式都会有开销。问题是:给定开销,哪个 ORM 的开销最小? :)
  • @Sixpounder 检查此链接上的答案我希望它有助于stackoverflow.com/questions/3438198/which-orm-for-codeigniter
猜你喜欢
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-15
  • 2012-10-12
相关资源
最近更新 更多