Php 检索多条记录时Rails与CodeIgniter的性能

Php 检索多条记录时Rails与CodeIgniter的性能,php,ruby-on-rails,ruby,ruby-on-rails-3,codeigniter,Php,Ruby On Rails,Ruby,Ruby On Rails 3,Codeigniter,编辑-这不是一个用来抨击Rails的线程!我喜欢Rails,我只是想完全理解它们的区别。 edit2-发现了一篇非常简洁的文章,它看起来可能与对象如何实例化以及如何使用简单类或多维数组有关 我最近开始从PHP/Codeigniter转换到Ruby/Rails。我现在主要只是在玩Rails,以了解它是如何工作的 我最初关心的是性能。我有一个“位置”模型,它存储了一些关于位置的信息。大约10个varchar列。总共有4000条记录。我设置了两个比较CodeIgniter和Rails的快速测试 在ru

编辑-这不是一个用来抨击Rails的线程!我喜欢Rails,我只是想完全理解它们的区别。

edit2-发现了一篇非常简洁的文章,它看起来可能与对象如何实例化以及如何使用简单类或多维数组有关

我最近开始从PHP/Codeigniter转换到Ruby/Rails。我现在主要只是在玩Rails,以了解它是如何工作的

我最初关心的是性能。我有一个“位置”模型,它存储了一些关于位置的信息。大约10个varchar列。总共有4000条记录。我设置了两个比较CodeIgniter和Rails的快速测试

ruby/rails位置索引视图中,我运行
Location.all
。如果我呈现一个空视图,页面上的初始响应时间大约为400-500毫秒。没有
位置。所有
都是稳定的20ms

在php/codeigniter中,我可以做完全相同的事情(
$this->db->get('locations')->result\u array()
),页面上的初始响应大约为100ms。在没有实际调出所有记录的情况下,我的响应时间是稳定的30毫秒

我知道一次实际加载4000条记录可能是不现实的,但让我害怕的是,性能上有这么大的差异。有人能解释一下发生了什么,我能做些什么来避免这种情况吗。100毫秒与500毫秒是性能差异的5倍!到目前为止,我很喜欢rails,所以不要把这当成是一种抨击,只是想让我的头绕着它转

RUBY/RAILS屏幕截图

PHP/CODEIGNITER


当你调用
位置时。所有的
它正在实例化4000个对象;在rails中实例化对象时会发生很多事情

如果您关心应用程序的性能,那么无论是使用php还是rails,您都可能会进行大量缓存。在加载大量对象的情况下,可以使用IdentityCache之类的工具来缓存它们:


干杯,

请记住,PHP可能是由Apache提供的,您的Rails应用程序似乎是由WEBrick提供的。WEBrick并没有针对这样的东西进行优化。我现在使用的是“薄而直的剃须刀”。当你说“未优化”时,你能解释一下你的意思吗?因为你在本地运行Rails,在开发过程中可能会有很多事情会显著降低处理速度,例如冗长的日志记录。除此之外,你是在比较苹果和桔子。我建议您在Rails运行时查看详细日志,了解它正在做的所有事情—它是如何探测数据库模式和生成查询的。另外需要注意的是,在开发中运行时,Rails堆栈可能会在每次运行时重新编译应用程序,这非常耗时。在生产环境中,这种情况不会发生,性能可能会有很大差异。PHP解释器在这两种情况下都以相同的方式运行,因此其性能变化不大。我在我的登台服务器(运行Puma的linode box)上得到了非常相似的结果。暂存设置为生产。我不明白为什么这么多人都在试图结束这条线。这似乎是一个合理的担忧。我不会离开铁轨。。我只是想了解性能上的差异,以及为什么会有这种差异。我确实相信,对象实例化和使用简单的数据数组可能是不同之处。Ruby中的对象数组与PHP中的多维数据数组之间是否存在非常显著的差异?