1

たとえば、次のコードがあります。

// ...
for (int i = 0; i < 5000; ++i) {
    for (int j = 0; j < 7000; ++j) {
        // Do something...
    }
}
// ...

注釈を使用して変更できますか? はいの場合、どうすればそれを実行できますか? このようなもの:

// ...
@SplitFor(value="i < 2000, j < 3000")
for (int i = 0; i < 5000; ++i) {
    for (int j = 0; j < 7000; ++j) {
        // Do something...
    }
}
// ...

次のように翻訳する必要があります。

// ...
for (int i = 0; i < 2000; ++i) {
    for (int j = 0; j < 3000; ++j) {
        // Do something...
    }
}
// ...

それは可能ですか?はいの場合 -- どのように?

PS: これは簡単な並列化に使用できます。たとえば、Fork/Join フレームワークで使用する分割ループを生成できます。

4

1 に答える 1

1

通常、これは次の 2 つの方法のいずれかで行います。

  1. 注釈を見て、クラスコードを変更する注釈プロセッサ
  2. Aspectj は、注釈を見つけてコードのランタイム ウィービングを実行できますが、コードのブロック置換を実行する機能がどのようなものかはわかりません。通常、人々はコードを置き換えるためではなく、前/後/前後のアドバイスにこれを使用します。
于 2012-08-26T02:33:23.637 に答える