0

我需要校准机器,所以我的目标是运行一个 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");
4

2 回答 2

2

嗨,我建议你这样做。

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

于 2012-12-07T08:17:19.170 回答
0

如果你真的不需要记住所有这些数字,请记录一下算法技巧,不要使用数组。

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

for(int j = 0; j <=重复; j++)

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

你会看到它会运行得更快,因为你没有做太多的操作......你完全切断了 for 循环到 5000000 10 次

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

于 2012-12-07T08:26:31.690 回答