【问题标题】:PHP OOP Performance : Parameter or Instance Variable? [closed]PHP OOP 性能:参数还是实例变量? [关闭]
【发布时间】:2012-10-12 00:57:44
【问题描述】:

我很想获得 OOP 问题的答案,但目前找不到任何信息。

在这里,编写类和方法是为每个方法传递参数或使用实例/字段变量和 $this->x;

哪个在运行时更快?

class ExampleByParameter(){

 function SomeMethod($a,$b){
 echo $a." ".$b;
 return;
 }

}

class ExampleByInstance(){

 function __construct($a,$b){
 $this->a=$a;
 $this->b=$b;
 }

 function SomeMehtod(){
 $a=$this->a;
 $b=$this->b;
 echo $a." ".$b;
 return;
 }

}

我想它们与上面的示例没有区别,但我认为更复杂的代码可能会有显着差异。

【问题讨论】:

  • 这充其量只是一个微优化。不要专注于它。
  • 想想可用性:如果你在另一个函数中需要 $a 和 $b 怎么办?你每次都会传入参数吗?它是程序性的,不再是 OOP
  • ExampleByInstance 可能比 ExampleByParameter 更快。
  • 首先按照你的意思编写代码! 性能不是这里的决定因素,它是类设计和你的代码应该做什么的问题。如果完全存在,性能差异将是最小的,您将不会看到整体 300% 的加速或类似的东西。当您的程序被证明太慢时,请担心性能!
  • 这种决定必须考虑类的公共接口,而不是性能。

标签: php performance oop parameters instance-variables


【解决方案1】:

性能差异可以忽略不计。你真的应该决定哪种模式最适合你的类结构。

您的班级是否依赖$a$b 才能正常运行?将它们放入构造函数中。

SomeMethod 是公开的吗?除了返回的变量之外,它是否对提供的变量做任何事情?如果是这样,请将它们作为参数保留。

在大型项目中,与微不足道的性能改进相比,您将从准确的类设计中获得更多好处。

【讨论】:

  • 感谢您提供的信息,我想知道是否有明显的赢家,但是在设计课程时似乎还有很多事情要考虑。
猜你喜欢
  • 2019-12-23
  • 1970-01-01
  • 2011-05-04
  • 2012-05-30
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
相关资源
最近更新 更多