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

通常,您可以通过以下两种方式之一执行此操作:

  1. 注释处理器,它将查看注释并更改类代码
  2. Aspectj,它可以找到注释,并进行代码的运行时编织,但我不确定它有什么能力对代码进行块替换。通常人们将它用于之前/之后/周围的建议,而不是替换代码。
于 2012-08-26T02:33:23.637 回答