Warm tip: This article is reproduced from serverfault.com, please click

compilation-Java中的#ifdef #ifndef

(compilation - #ifdef #ifndef in Java)

发布于 2009-11-28 21:38:27

我怀疑是否有一种方法可以在Java中创建编译时条件,例如C ++中的#ifdef #ifndef。

我的问题是,有一种用Java编写的算法,并且对该算法的运行时间有所不同。因此,我想衡量每次使用改进后可以节省多少时间。

现在,我有一组布尔变量,这些布尔变量用于确定在运行时应该使用哪个改进,而不应该使用哪个改进。但是即使测试这些变量也会影响总运行时间。

因此,我想找到一种方法来确定在编译期间应编译和使用程序的哪些部分。

有人知道用Java做到这一点的方法吗?或者,也许有人知道没有这种方法(这也很有用)。

Questioner
jutky
Viewed
0
13.7k 2013-11-08 15:51:34
private static final boolean enableFast = false;

// ...
if (enableFast) {
  // This is removed at compile time
}

上面显示的条件在编译时进行评估。如果相反,你使用此

private static final boolean enableFast = "true".equals(System.getProperty("fast"));

然后,JIT编译器将评估任何依赖enableFast的条件。这样的开销可以忽略不计。