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)
解决方案
Encrypt a string (in a loop) by calling Cipher.update(). Encryption algorithms are by definition very difficult to optimize. The only problem is that there is some non-trivial setup you need to perform. I'm marking this answer as community wiki, so that somebody who's written it recently can fill it in.