我怀疑是否有一种方法可以在Java中创建编译时条件,如C++中的#ifdef #ifndef.
我的问题是有一个用Java编写的算法,我有不同的运行时间改进了该算法.所以我想测量每次改进时我节省了多少时间.
现在我有一组布尔变量,用于在运行时决定应该使用哪些改进,哪些不使用.但即使测试这些变量也会影响总运行时间.
所以我想找到一种方法来在编译期间决定编译和使用程序的哪些部分.
有人知道在Java中使用它的方法.或者也许有人知道没有这样的方式(它也会有用).
我想知道是否有类似于C的Java等价物
#if 0
... Some Code ...
#endif
Run Code Online (Sandbox Code Playgroud)
哪个可用于我们不想编译的代码块.添加块引号:
/*
... Some Code ...
*/
Run Code Online (Sandbox Code Playgroud)
也有同样的效果,但问题是,我们必须确保没有单行注释
// some comment
Run Code Online (Sandbox Code Playgroud)
在街区.
考虑一个java项目执行大量浮点运算,其中效率和内存消耗可能是重要因素 - 例如游戏.如果此项目针对多个平台,通常是Android和桌面,或者更常见的32位和64位计算机,您可能希望能够构建软件的单精度和双精度构建.
在C/C++和其他低级语言中,这可以通过typedef语句轻松实现.你可以有:
typedef float myfloat;
Run Code Online (Sandbox Code Playgroud)
而你想要去的那一天64位只是改为:
typedef double myfloat;
Run Code Online (Sandbox Code Playgroud)
只要你在代码中使用myfloat.
如何在java中实现类似的效果?
全局搜索并将"float"替换为"double"(或反之亦然)具有突破与外部库的兼容性的巨大缺点,外部库仅提供一种浮点精度,其中主要是java.lang的某些函数.数学课.
当你希望保持高效并保持内存紧密时(例如,通过拥有大量的原始类型数组),使用高级多态方法并不理想.
您是否曾经处理过这种情况?如果是这样,您认为这个问题最优雅的方法是什么?