一尘不染

Java中的#ifdef #ifndef

java

我怀疑是否有一种方法可以像Java中的#ifdef #ifndef这样在Java中创建编译时条件。

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

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

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

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


阅读 477

收藏
2020-03-12

共1个答案

一尘不染

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的条件。此开销可忽略不计。

2020-03-12