generate CPU load in Java

后端 未结 5 1417
悲哀的现实
悲哀的现实 2020-12-31 07:18

I am conducting some throughput testing. My application has to

  1. read from JMS
  2. do some processing
  3. write to JMS

My goal here is t

5条回答
  •  温柔的废话
    2020-12-31 08:00

    You could try something simple like

    private static void spin(int milliseconds) {
        long sleepTime = milliseconds*1000000L; // convert to nanoseconds
        long startTime = System.nanoTime();
        while ((System.nanoTime() - startTime) < sleepTime) {}
    }
    

    Test:

    public static void main(String[] args) {
        final int NUM_TESTS = 1000;
        long start = System.nanoTime();
        for (int i = 0; i < NUM_TESTS; i++) {
            spin(500);
        }
        System.out.println("Took " + (System.nanoTime()-start)/1000000 +
            "ms (expected " + (NUM_TESTS*500) + ")");
    }
    

    My output:

    $ java SpinTest
    Took 500023ms (expected 500000)
    

    So the loop didn't get optimized away (and yeah, I spiked my CPU to 100% for eight minutes just to test this :)).

提交回复
热议问题