Java 使用加法或减法比较大数字与小数字的速度

Java 使用加法或减法比较大数字与小数字的速度,java,performance,time-complexity,Java,Performance,Time Complexity,以下哪项操作更快?我在找计算机科学/理论解释 boolean value = System.currentTimeMillis() - myTime > TEN_HOURS; 或 为了好玩,这里有一个您可以自己运行的快速测试: public class StrangeComparison { private static final long TEN_HOURS = 1000 * 60 * 60 * 10; // milliseconds -> seconds ->

以下哪项操作更快?我在找计算机科学/理论解释

boolean value = System.currentTimeMillis() - myTime > TEN_HOURS;


为了好玩,这里有一个您可以自己运行的快速测试:

public class StrangeComparison {

    private static final long TEN_HOURS = 1000 * 60 * 60 * 10; // milliseconds -> seconds -> minutes -> hours -> ten

    private static final int NUM_COMPARISONS = 10000000;

    public static void main(String[] args) {

        long myTime = System.currentTimeMillis() - (TEN_HOURS / 2);

        long startTime = System.currentTimeMillis(); 
        for (int i = 0; i < NUM_COMPARISONS; i++) {
            boolean theValue = System.currentTimeMillis() - myTime > TEN_HOURS;
        }
        System.out.println("Took " + (System.currentTimeMillis() - startTime) + "ms for Comparison #1");

        startTime = System.currentTimeMillis(); 
        for (int i = 0; i < NUM_COMPARISONS; i++) {
            boolean theValue = System.currentTimeMillis() > TEN_HOURS + myTime;
        }
        System.out.println("Took " + (System.currentTimeMillis() - startTime) + "ms for Comparison #2");

    }
}

如果不是完全相同的话,它们将是几乎相同的。但是如果你很好奇,为什么不自己做一个测试来发现呢?我想要一个合乎逻辑的解释:一个计算机科学的解释。祝你好运。我希望这些都是完全相同的。一个合乎逻辑的解释,到底是什么?为什么它们几乎一模一样?因为它们本质上是相同的比较。鸭子和鸭子有什么区别?
public class StrangeComparison {

    private static final long TEN_HOURS = 1000 * 60 * 60 * 10; // milliseconds -> seconds -> minutes -> hours -> ten

    private static final int NUM_COMPARISONS = 10000000;

    public static void main(String[] args) {

        long myTime = System.currentTimeMillis() - (TEN_HOURS / 2);

        long startTime = System.currentTimeMillis(); 
        for (int i = 0; i < NUM_COMPARISONS; i++) {
            boolean theValue = System.currentTimeMillis() - myTime > TEN_HOURS;
        }
        System.out.println("Took " + (System.currentTimeMillis() - startTime) + "ms for Comparison #1");

        startTime = System.currentTimeMillis(); 
        for (int i = 0; i < NUM_COMPARISONS; i++) {
            boolean theValue = System.currentTimeMillis() > TEN_HOURS + myTime;
        }
        System.out.println("Took " + (System.currentTimeMillis() - startTime) + "ms for Comparison #2");

    }
}
Took 401ms for Comparison #1
Took 400ms for Comparison #2