时间实验导致令人困惑的结果

时间:2015-03-27 18:49:45

标签: java arrays timing

对于课堂作业,我们被告知使用system Time Array ListLinked List操作为一些不同的操作计时。

操作涉及gettingremoving所有项目,并且如此:

  

阵列 - 获取(从高到低),获得(从低到高),移除(从高到低),>移除(从低到高)   链接列表 - 获取,获取与迭代器。

这导致了一些奇特的结果......

在第一次试验中,我得到了阵列列表。

对于阵列列表,执行了以下操作,并导致以下系统时间。

  

所有项目都从低指数变为高指数。这需要2,931,133毫秒(毫秒)。

     

所有项目都从高指数变为低指数。这需要2,638,191毫秒。所有项目都从低指数到高指数被删除。这需要5,230,717,452毫秒。最后,所有项目都从高指数到低指数被删除。这需要3,843,744毫秒。

     

但是,如果你继续运行程序,最终从>数组列表中获取从低到高,从高到低的时间需要0ms。但是,任何其他操作的时间没有明显减少。它为什么这样做???

我猜garbage collector?要注意的一件事是初始化数组列表我正在使用随机Integer对象,每次启动运行时,我都在构建一个新的数组列出新对象。

感谢您的任何见解。我不必报道为什么会这样,但我很好奇。 注意:我犯了一个错误。我使用纳秒秒而不是毫秒!对于那个很抱歉。 我也弄清楚了,这里有一些代码。

/**
     * This method will get all items from the Array List moving from low to high
     * @param list the ArrayList to be used
     */
    public static void getTime1(ArrayList list)
    {
        for(int i=0; i < amt ; i++)
        {
            int test2 = (int) list.get(i);
            test += test2;
        }
    }
    /**
     * This method will get all items from the Array List moving from high to low
     * @param list the ArrayList to be used
     */
    public static void getTime2(ArrayList list)
    {
        for(int i=(amt-1); i != -1; i--)
        {
            list.get(i);
        }
    }

0 个答案:

没有答案