从PHP的类中的函数获取值的最佳做法是哪一种?

时间:2019-02-15 12:59:58

标签: php class object

我在课堂上有这个功能:

@ViewChild(SidebarComponent) sidebar: SidebarComponent;
// or, if several sidebars are in the template,
@ViewChild('sidebarReference') sidebar: SidebarComponent;
this.sidebar.toggleSidebar();

返回5。

如果我这样做:

my_class::my_function()

它的效率是否比这样做低:

$total = $something + my_class::my_function();
$total2 = $something2 + my_class::my_function();
$total3 = $something3 + my_class::my_function();

1 个答案:

答案 0 :(得分:1)

TL; DR

从架构的角度做正确的事,而忘记尝试自己进行微优化。如果您希望在所有计算中使用相同的值,请对该值进行缓存。

说明。

在PHP中调用任何函数都有开销。调用函数时,PHP必须在内存中创建一个stack frame,其中包含有关调用的信息,例如参数值,代码中的位置等。这需要花费一些时间,并且还会占用很多时间。一些记忆。由于PHP会传递对象by referencecopy-on-write机制,因此占用的内存量有所不同,但通常不是很多。因此,除非您要在函数中修改大型字符串/二进制数据,否则开销应该可以忽略不计。不过,您应该使用第二种方法,即“缓存”值的方法,因为从消费者的PoV来看,在任何情况下都不会my_function() 保证每次返回相同的值时间。

逐年,PHP越来越优化。示例包括zVal和opcache。这些改进导致了合理指令的自动优化。尝试对此进行修改实际上可能导致PHP无法优化您的程序。非常有知识和能力的人正在为此工作,并且您不需要做任何特殊的事情就可以从自动优化中受益。相反,应将重点放在体系结构以及代码的概念准确性上,以使其规范化。 编译器的优化程度越来越高,硬件每年都在变得越来越便宜,而无需您的参与;但是您的 code 不会自行规范化