如何让java程序只运行1秒? [已关闭]

问题描述 投票:0回答:2

我需要校准机器,所以我的目标是运行一个java程序大约1秒。所以我可以在其他机器上使用相同的程序来测量它们的运行时间并将其校准为 1 秒。

我知道 1 秒的运行时间太短了,这取决于多种因素。但我想知道你们是否可以分享关于校准的任何想法。

我想运行一个java程序大约一秒钟。我希望编译器对数组执行某些标准操作。我尝试使用数组来查找偶数和奇数。

程序输出并不那么重要。运行时间只需大约 1 秒。问题是,由于 1 秒太小,它会产生波动的运行时间,例如有时 1.25 或有时 0.678。

有没有办法强制编译器只运行 1 秒而不给出很大的错误值。

PS:我不想使用Thread.sleep(1000)。

现在,这是我正在使用的代码。正如我所说,我并不关心输出和操作本身。我只需要 1 秒的运行时间。如果您有任何想法,请帮助我。

long[] array = new long[5000000];
    int repeat = 10;
    long t1 = System.currentTimeMillis();

    for(int j = 0; j <=repeat; j++)
    {
        int even = 0, odd = 0;
        for(int i=0; i<array.length; i++)
        {
            array[i] = i;
        }

        for(int i=0; i<array.length; i++)
        {
            if(array[i] % 2 == 0)
                even++;
            else
                odd++;
        }
    }
    long t2 = System.currentTimeMillis();
    long t3 = t2 - t1;
    System.out.println(t3*10e-4+ " sec");
java performance
2个回答
2
投票

嗨,我建议您这样做。

while(!(System.currentTimeMillis() - t1 >= 1000)) { ...你的程序 } 系统.退出(0);


0
投票

为了记录算法技能,如果您确实不需要记住所有这些数字,请不要使用数组。

您可以在此代码中获得相同的功能

for(int j = 0; j <=repeat; j++)

{
    int even = 0, odd = 0;
    for(int i=0; i<array.length; i++)
    {
        if(i%2 == 0){
           even++;
        }else{
            odd++;
        }
    }
}

你会发现它会运行得更快,因为你没有做那么多操作......并且你完全切断了for循环到5000000 10次

我希望这可以帮助你改善时间

© www.soinside.com 2019 - 2024. All rights reserved.