关闭扫描仪是否会影响性能

时间:2015-06-08 08:58:07

标签: java java.util.scanner user-input performance-testing

我正在解决竞争问题,在问题上,我正在使用扫描仪进行用户输入 这些是2个代码段,一个关闭扫描器,另一个没有关闭扫描器。

  

关闭扫描仪

import java.util.Scanner;

public class JImSelection {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = Integer.valueOf(scanner.nextLine());
        while (n-- > 0) {
            double number = (Math.log(Long.valueOf(scanner.nextLine())) / Math.log(2));
            System.out.println((int) number - number == 0 ? "Yes" : "No");
        }
        scanner.close();
    }
}
  

关闭扫描仪

import java.util.Scanner;

public class JImSelection {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = Integer.valueOf(scanner.nextLine());
        while (n-- > 0) {
            double number = (Math.log(Long.valueOf(scanner.nextLine())) / Math.log(2));
            System.out.println((int) number - number == 0 ? "Yes" : "No");
        }           
    }
}

第一个(关闭扫描仪)给我得分14.47
第二个(不关闭扫描仪)给出15.22 我认为编译器在使用scanner.close();时释放了资源,这就是为什么分数存在差异。

这是评分判断公式。

  

分配为100.假设您提交了n的解决方案   字符,然后你的分数是(56 / n)* 100.

1 个答案:

答案 0 :(得分:4)

  

分配为100.假设您提交了n的解决方案   字符,然后你的分数是(56 / n)* 100.

你开玩笑吧?一个解决方案的得分为14.47。这意味着您的源代码为56 / (14.47/100) =~= 387个字符。(=~=缺少“约等于”符号)

在另一个例子中,您的得分为15.22,这意味着您的源代码长度为56 / (15.22/100) =~= 368个字符。

29个字符的差异,这可能是您的源代码行的长度scanner.close();(包括前导空格,两个尾随空格和回车符/换行符对)

这与代码的性能无关。