我正在浏览一个php包,发现了一些有趣的代码,我希望能有一些亮点。所有写的都不是将表达式传递给for循环参数,而是两个分号。
for (;;) { // This is the line in question
$this->output .= $this->a;
$this->a = $this->get();
if ($this->a === $this->b) {
break;
}
if (ord($this->a) <= self::ORD_LF) {
throw new JSMinException('Unterminated string literal.');
}
if ($this->a === '\\') {
$this->output .= $this->a;
$this->a = $this->get();
}
}
我知道for循环通常包含由分号分隔的3个表达式。所以这显然只是运行一个没有表达式的for循环,并依赖于break(第6行)来退出循环。
我想知道的是,这种方法是否比传统方法具有性能优势?我看到它的方式,可以很容易地重写为while循环:
while($this->a !== $this->b){
// Loop Contents
}
答案 0 :(得分:3)
即使它确实如此,即使没有,我也不会因为轻微的性能提升而牺牲可读性。除非你的应用程序是谷歌或Facebook的流量水平。
答案 1 :(得分:1)
根据基准测试结果,foreach和while之间可以得出结论,在更多情况下需要更好的表现。看看这个链接。它可能有帮助:
答案 2 :(得分:-1)
我认为这是一个非常糟糕的做法!我会像这样将CPU使用率提高到100%。我认为一段时间更具可读性,你应该为此而努力。
总是像这样循环,该机器上的其他任务也有机会:
while($this->a !== $this->b){
// Loop Contents
sleep( $sometime );
}