1

私はphpパッケージを調べていて、いくつかの光を当てたい興味深いコード行を見つけました。for ループ パラメーターに式を渡す代わりに、2 つのセミコロンだけを記述しました。

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 ループを実行しているだけであり、ブレーク (6 行目) に依存してループを終了しています。

私が知りたいのは、この方法は従来の方法よりもパフォーマンス上の利点がありますか? 私の見方では、これは次のように while ループとして簡単に書き直すことができたはずです。

while($this->a !== $this->b){
  // Loop Contents
}
4

3 に答える 3

3

たとえそうであっても、そうでなくても、わずかなパフォーマンスの向上のために読みやすさを犠牲にすることはありません。あなたのアプリが Google や Facebook のトラフィック レベルに近い場合を除き、そうではありません。

于 2012-09-13T17:15:31.943 に答える
1

for、foreachの間のベンチマーク結果によると、より多くの場合にパフォーマンスが向上すると結論付けることができます。このリンクを見てください。役立つ場合があります。

基準

于 2012-09-13T17:20:58.073 に答える
-1

これは非常に悪い習慣だと思います!このように実行すると、CPU 使用率が 100% になります。私はしばらくの間の方が読みやすいと思うので、あなたはそれに行くべきです。

常に次のようにループします。そのマシンの他のタスクにもチャンスがあります。

while($this->a !== $this->b){
  // Loop Contents
  sleep( $sometime );
}
于 2012-09-13T17:17:56.897 に答える