次の C++ ループがあります。
for (i = LEN_MAX - 1; i >= 0; i--) {
int j = i - LEN_MAX + len;
if (j < 0)
break;
int ind = a.getElem(j);
short t = ind;
ind = --c[ind];
b.setElem(ind, t);
}
私がやりたいのは、反復間のすべての依存関係をそこから削除することです。たとえば、上記のループでは、行ind = --c[ind]
に反復間の依存関係があります。これは、減少させるには、前の反復からの値を取得する必要があるためです。私が探している変換の例を次に示します。
から:
for (i = 1; i < RADIX_MAX; i++) {
if (i == radix)
break;
c[i] += c[i - 1];
c[i] += temp;
}
に:
short temp = c[0];
for (i = 1; i < RADIX_MAX; i++) {
if (i == radix)
break;
c[i] += temp; //this loop no longer depends on last iteration
temp = c[i];
}
これと同じ手法を最初に投稿したループに適用したいのですが、方法がわかりません。これを行う理由は、使用しているツールのパフォーマンスを最適化するために必要だからです。誰にもアイデアはありますか?