繁体   English   中英

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

[英]Which of these is best practice for getting values from a function within a class in PHP?

我在课堂上有这个功能:

my_class::my_function()

返回5。

如果我这样做:

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

是否比执行效率低:

$something_else = my_class::my_function();

$total = $something + $something_else;
$total2 = $something2 + $something_else;
$total3 = $something3 + $something_else;

TL; DR

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

说明。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM