2011-05-06 93 views
2

在PHP中,我有一个使用preg_match()的回调函数(确切的内容与我认为的不相关)。在PHP中,从计算中分离返回是否有优势?

是计算结果并分配给一个变量,然后返回该变量,还是应该返回结果?

换句话说,是它更好地做到这一点:

function a() { 
    $result = preg_match(); 
    return $result; 
} 

function b() { 
    return preg_match(); 
} 

我想在代码风格和性能方面。有没有我应该遵循的标准还是真的不重要?

+0

在我读到@Mark B的答案后,我做了一些深入的研究。使用http://stackoverflow.com/questions/1795425/how-to-get-opcodes-of-php中描述的方法,上面的第一种方法确实会导致再调用一个操作码(ASSIGN)。 – mpdonadio 2011-05-09 16:16:40

+0

@MPD哇谢谢!所以如果我真的在进行微观优化,我会选择第二个,但正如你之前所说的那样,它并没有太大的区别。 – 2011-05-09 16:20:07

+0

我不认为它真的有区别。我不把100%信任定时for-loops作为优化的证明。能够解释为什么和证明(asm,操作码,字节码等)是关键。 – mpdonadio 2011-05-09 19:15:08

回答

7

从性能角度来看,这两种情况没有区别。

关于编码风格,这是个人喜好的问题。就我个人而言,我会主张第二点,因为它更清晰,更易于阅读,但我认为任何人都不会以任何方式对您造成任何伤害。

+3

+1绝对的个人喜好。如果代码足够简单,可以自我记录,我会经常使用单行方法。 – Austin 2011-05-06 03:07:13

2

个人而言,我尝试返回一个变量,因为我经常希望在调试过程中将某个变量记录在某个地方,或者至少在某些情况下可用于print_rassert。我也倾向于做像

$foo = step1($foo); 
$foo = step2($foo); 
$foo = step3($foo); 
return $foo; 

与字符串操纵,也当我认为需求可能会改变。这种风格使得评论/取消评论处理变得容易。

一般来说,我编写的代码是清晰和自我记录,但也试图预测事情会如何变化,并因此实施事情以使影响最小。

2

在实例化$ return变量时会出现一个微观命中的性能,但在任何实际情况下都不会引人注意。通常我会做直接回报,除非我需要进一步处理这个价值。

+0

出于纯粹的好奇心,你有没有证实或读过这两个例子会导致不同的字节码? preg_match的输出必须返回到某个地方(堆栈,临时变量等),但我对PHP运行时无法了解足够的信息。我相信我已经看到了C编译器会生成相同的asm的情况,但这是一个不同的球赛。 – mpdonadio 2011-05-07 17:11:14

+0

不知道。我从来没有深入了解发生了什么。 – 2011-05-08 19:27:28

相关问题