求和数java的最快方法

时间:2019-02-05 10:00:04

标签: java performance sum

import java.util.Scanner;

public class JavaApplication10 {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        while (true) {
            int read = Integer.parseInt(reader.nextLine());
            if (read == 0) {
                break;
            }
            int sum;
            sum = read;
            System.out.println("Sum now: " + sum);
            while (true) {
                int read1 = Integer.parseInt(reader.nextLine());
                if (read1 != 0) {
                    sum += read1;

                    System.out.println("Sum now: " + sum);
                } else if (read1 == 0) {
                    System.out.println("Sum in the end: " + sum);
                    break;
                }
            }
        }
    }
}

这是我写的代码,想知道这是否是最快的方法?

1 个答案:

答案 0 :(得分:6)

您在这里问错了问题。您看,您的代码可以做到:

  • 要求用户输入一个值(分别从standard.in读取)
  • 然后累积这些值
  • 并打印(多次)

现在:

  • 这里的性能并不重要
  • 如果可以的话,真正的瓶颈是从standard.in读取并打印到standard.out

简而言之:您无法编写与众不同的“ this”代码,从某种意义上说,它已经是“最优”的:您得到了输入,您没有在浪费时间/内存“存储”它,只是在积累总和,完成了。 那个要求已正确编码。

您唯一可以保存的是打印语句,因为单个println可能花费 milli 秒,而添加int值可能会在 nano 秒内发生。是的:打印比累加值慢数千倍。更糟糕的是:如果有人坐在机器前,那么程序会坐在那里,直到用户键入数字和ENTER键。因此,“如何添加”不会以任何重要方式影响代码的整体运行时间。

换句话说:您正处于担心“性能”无济于事的时刻。学习如何编写人类可读的代码,学习如何编写简洁的代码来优雅地完成您想做的事情。

性能是一个奢侈品问题,您在学习曲线的后期会担心。