【发布时间】:2017-08-19 17:09:33
【问题描述】:
我读到过早优化是万恶之源。因为它需要更多时间,而且它会使代码更复杂。
有时您需要通过 id 获取某些项目。这是快速查询。
然后在同一请求中,您需要在另一个函数中再次获取该项目的信息。
再次调用查询是不是很糟糕?或者我是否需要重用获取的对象,即使它可能只节省最终用户不会感觉到的几毫秒。除非许多用户同时进行相同的查询。
好的,举个例子:
function getItem()
{
$item = null;
if ($someCondition) {
$item = $this->repository->getById(1);
}
someFunction($item);
}
function someFunction($item)
{
if ($item == null) {
$item = $this->repository->getById(1);
}
doSomething($item);
}
所以在 someFunction 中我们添加了一个检查 - 额外的逻辑来知道该项目是否被提取。在这个简单的例子中,添加更多逻辑是没有问题的。
但在现实世界的应用程序中,您需要添加更多逻辑只是为了优化而不是第二次获取项目。
更多逻辑 - 更多时间编写和阅读代码。
ORM 是不关心优化的例子——它们只是延迟加载相关的项目,例如 Doctrine。因此,作为开发人员,您无需编写连接其他表的查询,从而节省时间。
一些程序员说如果它可以避免两次相同的查询,它的代码很丑。
在某些情况下,优化可能需要半小时或 1 小时。加起来,生产力会因此而降低。
遇到这些情况我们应该怎么做?
【问题讨论】:
标签: database optimization