我正在进行一些吞吐量测试。我的应用程序需要:
- 从JMS中读取数据
- 进行一些处理
- 将数据写入JMS
我的目标是模拟第二个步骤,“进行一些处理”。也就是说,在转发事件之前,引入延迟并占用CPU一定时间(例如500毫秒)。
一个朴素的方法是使用 Thread.sleep(500)
。这会引入正确的执行延迟,但不会使CPU得到锻炼。
计算斐波那契数列是一个选择。有人使用过任何有趣的技术来保持CPU在给定时间内保持繁忙状态吗?
理想的特点应该是:
- 执行各种指令,而不是(例如)只是在循环中旋转等待
- 不是HotSpot VM将被优化为消失的东西
- 有一种简单的方法可以调整处理时间长度(显然,由于硬件的不同,完成时间会有所不同)