关闭扫描仪会影响性能吗

Ton*_*ark 4 java user-input performance-testing java.util.scanner

我正在解决一个竞争问题,在问题中,我使用扫描仪获取用户输入。
这些是 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

不关闭扫描仪

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");
        }           
    }
}
Run Code Online (Sandbox Code Playgroud)

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

这就是分数判断公式。

它的得分为 100。假设您提交了一个包含 n 个字符的解决方案,那么您的得分为 (56/n)*100。

Erw*_*idt 5

它的得分为 100。假设您提交了一个包含 n 个字符的解决方案,那么您的得分为 (56/n)*100。

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

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

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

这与您的代码的性能无关。