generate CPU load in Java

对着背影说爱祢 提交于 2019-11-30 12:53:39

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.

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 :)).

cliff.meyers

Create a very large collection of random objects and then alternate calls to Collections.shuffle() and Collections.sort().

I used Jakarta Commons Lang to generate random strings for the purposes of shuffling/sorting.

Huntrods

Create a matrix and do a couple of matrix manipulations.

You can tune that pretty easily by varying the size of the matrix.

Yet another stuff you can use, maybe :

        long start  = System.currentTimeMillis();
        long count = 0l;
        for(long x=0;x<Integer.MAX_VALUE ;x++){
            count+=1;
        }
        long end = System.currentTimeMillis();
        System.out.println(end-start +" ms");
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!