Java 验证处理时间的有效方法

Java 验证处理时间的有效方法,java,oop,Java,Oop,我正在努力寻找使用不同块使用的最佳方法。我正在运行下面的回文程序,用3种不同的方式测量每个回文程序的执行时间。但我总是得到“0”作为输出。我的代码有什么问题。请帮帮我 主要 回文使用StringBuilderReverse StringBuilder bdr = new StringBuilder(str); if (str.equalsIgnoreCase(bdr.reverse().toString())) { return "The given st

我正在努力寻找使用不同块使用的最佳方法。我正在运行下面的回文程序,用3种不同的方式测量每个回文程序的执行时间。但我总是得到“0”作为输出。我的代码有什么问题。请帮帮我

主要

回文使用StringBuilderReverse

StringBuilder bdr = new StringBuilder(str);
        if (str.equalsIgnoreCase(bdr.reverse().toString())) {
            return "The given string is a Palindrome.";
        } else {
            return "This is not a Palindrome string.";
        }
回文使用forloop

String revStr = "";
for (int i=str.length()-1; i>=0; i--) {
                revStr = revStr + str.charAt(i);
                }

    if (str.equalsIgnoreCase(revStr)) {
                return "The given string is a Palindrome.";
            } else {
                return "This is not a Palindrome string.";
            }
回文使用while

    int i = 0, j = str.length() - 1;
    while (i < str.length()) {
        if (str.charAt(i) != str.charAt(j)) {
            return "This is not a Palindrome string.";
        } else {
            i++;
            j--;
        }
    }
    return "The given string is a Palindrome.";

您的时间单位太大,无法捕获所花费的时间。您应该使用更小的时间单位,如纳秒,并尝试多次运行相同的检查,例如10000次

以纳秒为单位的示例代码

        long startTime, endTime, duration;
        startTime = System.nanoTime();
        System.out.println(palindromeUsingStringBuilderReverse(str));
        endTime = System.nanoTime();
        duration = endTime - startTime;
        System.out.println("Duration for using string builder : " + duration);

        startTime = System.nanoTime();
        System.out.println(palindromeUsingForLoop(str));
        endTime = System.nanoTime();
        duration = endTime - startTime;
        System.out.println("Duration for using for loop : " + duration);

        startTime = System.nanoTime();
        System.out.println(palindromeUsingWhile(str));
        endTime = System.nanoTime();
        duration = endTime - startTime;
        System.out.println("Duration for using while loop : " + duration);

实际上,我建议两者都做。更多的迭代+更高精度的时钟将产生更好的结果。我同意这一点,改变了答案。好的。现在我看到了使用
System.nanoTime()后执行结果的差异。非常感谢。
Enter a word to check its a palindrome or not : madammadammadammadammadammadammadammadammadammadam
The given string is a Palindrome.
Duration for using string builder : 0
The given string is a Palindrome.
Duration for using for loop : 0
The given string is a Palindrome.
Duration for using while loop : 0

Process finished with exit code 0
        long startTime, endTime, duration;
        startTime = System.nanoTime();
        System.out.println(palindromeUsingStringBuilderReverse(str));
        endTime = System.nanoTime();
        duration = endTime - startTime;
        System.out.println("Duration for using string builder : " + duration);

        startTime = System.nanoTime();
        System.out.println(palindromeUsingForLoop(str));
        endTime = System.nanoTime();
        duration = endTime - startTime;
        System.out.println("Duration for using for loop : " + duration);

        startTime = System.nanoTime();
        System.out.println(palindromeUsingWhile(str));
        endTime = System.nanoTime();
        duration = endTime - startTime;
        System.out.println("Duration for using while loop : " + duration);