I am conducting some throughput testing. My application has to
- read from JMS
- do some processing
- write to JMS
My goal here is to simulate #2, 'some processing'. That is, introduce a delay and occupy the CPU for a given time (e.g. 500ms) before forwarding the event.
The naive approach would be to Thread.sleep(500)
. This would introduce the right delay in execution, but would not exercise the CPU.
Calculating Fibonacci numbers is one option. Has anyone used any interesting techniques just to keep CPU(s) busy for a given time?
Ideal characteristics would be:
- Performs a variety of instructions, rather than (for example) just spinning on a loop
- Not something the HotSpot VM is going to optimise away to nothing
- Has an easy way to adjust the processing period up or down (time to complete will clearly vary given the hardware)