PHP / OOP性能-方法与数组


PHP / OOP Performance - Methods vs. Array

在效率是主要问题的大型项目(每天约200万用户)上使用Zend框架或任何其他框架,我想知道以下哪种方法从性能的角度来看更优,例如,$_POST全局变量的数据。

是调用多个可链接的方法,还是调用一次,保存到一个变量,然后只指定所需的键?

<标题>方法1
echo $this->getRequest()->getParam('key1') . 
$this->getRequest()->getParam('key2');
<标题>方法2 h1> 示对于多个键,例如至少5个或更多

Speed = Speed

这是一个很难回答的问题,因为这些东西你必须测试,因为这很大程度上取决于硬件。

一些公司倾向于"让我们增加ram"的政策,而另一些公司倾向于"让我们增加cpu"的政策。

你的例子解释了

echo $this->getRequest()->getParam('key1') . 
$this->getRequest()->getParam('key2');

这里的速度完全取决于你的getRequest()方法的复杂性。是简单的回报;声明吗?没问题,让编译器为你处理。

你正在执行一些逻辑(例如if-else语句)吗?你应该把结果"缓存"到一个变量中。

$request = $this->getRequest();

这将不会占用额外的内存,因为$request在内部只是一个指向request对象的指针。

你的第二个方法:

$post = $this->getRequest()->getPost();
echo $post['key1] . $post['key2'];

是坏的。数组(与对象相反)在返回时被复制;

$post现在是请求对象中数据的副本。因此使用额外的内存。选择项目当然会比在项目被选中时调用方法更快。但是它使用更多的内存。$post越大,使用的内存就越多。

还是speed != speed

它是一个小数组吗?你的应用很慢吗?你不能通过这样的小折射来解决速度问题。让它易于阅读!选一个;)

边注

我确实看到了一些很臭的代码。你在一个对象中(你正在使用$this)。您正在使用getRequest()方法获取另一个对象。你用这种方法做什么?创建对象?看起来像是紧密耦合。

也许你应该在构造函数中检索一个Request对象,然后简单地:

$this->request->getParam($ket);

更快,更好,更容易阅读和IoC。但话说回来,这只是一个假设;)如果不了解更多的请求上下文和参数数量,很难说