我有一个非常简单的java程序,可以打印出一百万个随机数。在Linux中,我观察到该程序在其生命周期内所占的%CPU,它从98%开始,然后逐渐降低到2%,因此导致该程序非常慢。有哪些因素可能导致程序逐渐减少CPU时间?
我尝试使用nice -20
运行它,但仍然看到相同的结果。
编辑:使用/usr/bin/time -v
运行程序我看到不寻常的数量的非自愿上下文切换(588个自愿vs 16478个非自愿),这表明操作系统正在运行其他一些更高优先级的进程。
最佳答案
它归结为两件事:
如果您主要在一个循环中执行
System.out.println(randInt)
一百万次,那么这可能会很昂贵。 I/O并不是免费提供的东西之一,写入任何输出流都需要资源。