-4
// (1)
for (int iter = 1; iter <= VERTEX_SIZE; iter ++) {
    if (visit[iter]) continue;
    dfs(iter);
}

// (2)
for (int iter = 1; iter <= VERTEX_SIZE; iter ++) {
    if (!visit[iter]) {
        dfs(iter);
    }
}

どのコードがより最適化されていますか? 私はちょうどそれについて興味があります。

4

2 に答える 2

4

ある程度まともなコンパイラでも、これはまったく違いはありません。生成されたマシン コードはまったく同じになります。それでも確認したい場合は、ベンチマークしてください。

最も読みやすいと思われるものを選択してください。

于 2012-10-13T13:50:46.070 に答える
0

違いはありません。あなたが最高だと思うものを選んでください。最初の方法でコンパイルしたすべてのプログラムは、間違いなく 2 番目の方法でも動作し、実行時間は同じになります。

注:私は 2 番目の方法を使用します。私はそれがより読みやすく、私が今まで見た (C++ および pheudocode での) DFS の実装の大部分がそれを使用していると思います。

于 2012-10-13T14:34:39.597 に答える