【发布时间】:2010-09-27 18:46:24
【问题描述】:
我正在进行一些吞吐量测试。我的应用程序必须
- 从 JMS 读取
- 做一些处理
- 写入 JMS
我的目标是模拟#2,“一些处理”。也就是说,在转发事件之前引入延迟并占用 CPU 一段给定的时间(例如 500 毫秒)。
天真的方法是Thread.sleep(500)。这会在执行中引入正确的延迟,但不会占用 CPU。
计算斐波那契数是一种选择。 有没有人使用任何有趣的技术来让 CPU 在给定的时间内保持忙碌?
理想的特征是:
- 执行各种指令,而不是(例如)只是循环旋转
- HotSpot VM 不会优化到什么都没有
- 有一种简单的方法可以向上或向下调整处理周期(完成时间会因硬件而明显不同)
【问题讨论】:
-
你能进一步解释为什么使用 CPU 是必要的,但简单地用 Thread.sleep() 睡觉是不合适的吗?
-
我不确定我理解你所说的“锻炼 CPU”是什么意思,以及为什么你需要这样做。你能详细说明一下吗?你到底在这里测试什么?据我所知,它要么是“一些处理”,要么是读/写 JMS,要么是向这个东西发送数据的东西。谢谢。
-
> sleep 不适合我需要 JMS 操作在实际 CPU 条件下发生。空闲的 CPU 可能会给我带来虚假的高 JMS 性能;我需要 CPU “实际”地忙碌,这样我的 JMS 测量结果才好。
标签: java encryption load cpu