我正在进行一些吞吐量测试。我的应用程序必须在Java中生成CPU负载
- 读取从JMS
- 做一些处理
- 写入JMS
我在这里的目的是模拟#2, '一些处理'。也就是说,在转发事件之前引入延迟并占用CPU一段时间(例如500毫秒)。
天真的方法是Thread.sleep(500)
。这会引入正确的执行延迟,但不会执行CPU。
计算斐波纳契数是一种选择。 有没有人使用过任何有趣的技术来保持CPU在特定时间内忙碌?
理想的特性是:
- 执行各种指令,而不是(例如)只是一个环纺
- 不是的HotSpot虚拟机是要优化烂掉
- 有一个简单的方法来调整处理周期向上或向下(完成的时间将明显不同给定硬件)
你能进一步解释一下为什么利用CPU是必要的,但简单地用螺纹睡觉。睡觉()不适合? – 2008-12-19 20:30:36