java中许多数字求和的最快方法

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

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

Gho*_*ica 6

你在这里问错了问题.你看,你的代码做了:

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

现在:

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

简而言之:你不能写出"这个"代码有很大不同,它已经是"最佳"的意义了:你得到你的输入,你不浪费时间/记忆"存储"它,你只需积累总和,完成.要求编码良好.

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

换句话说:你正处于担心"表现"无益的地步.学习如何编写人类可读代码,学习如何编写简单的代码,优雅地完成您想要做的事情.

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