mainじゃなくてもサブルーチンでもいいけど、分岐の頻度を最小限に減らさないといけない
パイプラインが長いと、分岐の度に大きなペナルティ食らうわけよ

んで

for (i = 0; i < 1000; i++) {
if (a == b) {
   //HogeHoge
 } else {
   //BokuhaKamiyamaMangetuChan
 }
}

よりも

if (a == b) {
 for (i = 0; i < 1000; i++) {
   //HogeHoge
 }
} else {
 for (i = 0; i < 1000; i++) {
   //BokuhaKamiyamaMangetuChan
 }
}

のほうが速いよね。
パフォーマンス重視なら、分岐を繰り返し処理の外に追い出せる場合は
なるべくそうしたほうがいい。たとえ冗長になってもね。
普通のCPU向けプログラミングでも同じ
(最近は分岐予測のほうが賢くなってるから一概にはいえないけど)