编辑::哦,我忘了
class Test1{
public static function test(){
for($i=0; $i<=1000; $i++)
$j += $i;
}
}
class Test2{
public function test() {
for ($i=0; $i<=1000; $i++){
$j += $i;
}
}
}
用于此算法
$time_start = microtime();
$test1 = new Test2();
for($i=0; $i<=100;$i++)
$test1->test();
$time_end = microtime();
$time1 = $time_end - $time_start;
$time_start = microtime();
for($i=0; $i<=100;$i++)
Test1::test();
$time_end = microtime();
$time2 = $time_end - $time_start;
$time = $time1 - $time2;
echo "Difference: $time";
我有结果
Difference: 0.007561
如今,我正在尝试使我的方法尽可能地静态。但这是真的,.. atleast for php
当不需要周围的对象时,应始终使用静态,而在需要对象时应使用动态。在您提供的示例中,不需要对象,因为该方法不会与类中的任何属性或字段进行交互。
这应该是静态的,因为它不需要对象:
class Person {
public static function GetPersonByID($id) {
//run SQL query here
$res = new Person();
$res->name = $sql["name"];
//fill in the object
return $res;
}
}
这应该是动态的,因为它使用了它所在的对象:
class Person {
public $Name;
public $Age;
public function HaveBirthday() {
$Age++;
}
}
速度差异最小,但是您必须创建一个对象来运行动态方法,并且该对象保存在内存中,因此动态方法占用更多的内存和更多的时间。
简短回答,因为我不想大声疾呼:
是否更快。如果您需要某种性能至关重要的东西,那么考虑将每个函数调用的时间减少0.02纳秒,而不是无论如何都不会在PHP中做到这一点。
静态方法产生了无法测试,无法维护的“全局性一切”代码,这将给您带来更多的伤害。
[如果您不想使用适当的OOP(如果您知道这样做的原因和原因,那完全可以),请这样做。只是不要这样做,因为您想节省CPU时间。
http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability/
http://sebastian-bergmann.de/archives/885-Stubbing-Hard-Coded-Dependencies.html
http://en.wikipedia.org/wiki/Class-based_programming
如果仅单击一个链接: http://www.scribd.com/doc/20893084/Advanced-OOP-and-Design-Patterns#scribd
Premature optimization is the root of all evil.构建代码易于维护,如果运行缓慢,请进行一个配置文件,它很可能会告诉您文件系统或数据库存在问题,您整理出的所有内容将包含一些非常具体的部分的PHP进行优化。如果您的代码整洁,可更改,则可以加快速度。
microprocessor时。那个鼓被击败得像任何一匹马一样厉害,我看不出它与原始问题有何关系。实际上,我可能很幸运,但是我还没有看到这种野外行为猖evidence的证据。 las,互联网上的某个人必须正确,然后我们才能整夜共事。 有关主题的更多信息,我认为公认的答案是最务实的,对该问题的第一个评论是要提出的正确答案。静态代码与实例化代码是否更快,主要取决于该语言的实现方式,我看不到这些响应中的任何一个都能充分回答有关PHP的问题。有人知道PHP并想参与其中吗?