我有一个非常简单的java程序,可以打印出一百万个随机数。在Linux中,我观察到该程序在其生命周期内所占的%CPU,它从98%开始,然后逐渐降低到2%,因此导致该程序非常慢。有哪些因素可能导致程序逐渐减少CPU时间?

我尝试使用nice -20运行它,但仍然看到相同的结果。

编辑:使用/usr/bin/time -v运行程序我看到不寻常的数量的非自愿上下文切换(588个自愿vs 16478个非自愿),这表明操作系统正在运行其他一些更高优先级的进程。

最佳答案

它归结为两件事:

  • I/O很昂贵,而
  • 视您存储数字的方式而定,这也会对性能产生不利影响。

  • 如果您主要在一个循环中执行System.out.println(randInt)一百万次,那么这可能会很昂贵。 I/O并不是免费提供的东西之一,写入任何输出流都需要资源。

    10-08 07:06