简单循环的执行时间与VAST的差异:怎么来的?

时间:2018-11-17 17:08:10

标签: android performance cpu-usage

我注意到,即使在两个相似但不同的设备(即三星Galaxy S4和S7)上进行简单循环,执行时间也会发生巨大差异。在S7上,以下测试大约需要5毫秒,在S4上大约需要250毫秒,相差50倍。我确定S7比S4快,但是50倍???

我尝试了Android Profiler(CPU,MEMORY),但是没有看到任何危险信号。 S7应用程序的CPU煮熟率约为10%,而S4应用程序的CPU煮沸率约为25%。

下面的代码是我的实际应用中的 st 摘录。

    //@ Test Timing
    public static void timingTest()
    {
        int i,count=0;
        long t1,t2;
        String TAG="MYAPP";

        t1 = System.currentTimeMillis();
        for( i=0; i<4000000; i++ ) {        // get start time
            count++;                        // just bump count
        }
        t2 = System.currentTimeMillis();    // get stop time

        String msg=String.format( "ELAPSED = %8.3f sec.", 0.001*(t2-t1) );
        Log.i( TAG, msg );                  // announce elapsed time
    }

我认为优化可能有所不同,但没有相对 如果在循环中放入 real (无法优化)处理,会有所不同。在Debug和Release版本之间也没有任何区别。

我已经打了一个星期了,没有更多的见识。
有人对此有任何想法吗?还是我很走运?

2 个答案:

答案 0 :(得分:0)

实际上,它是Exynos 5Snapdragon 820Exynos 8 CPU。 API级别也在那里发挥作用;内核的数量以及并行使用的内核数量。就在昨天,我们读了一个Q & A,该书正在比较CJava上的ARMx86S4上的操作系统可能已使用错误的标志进行了编译;并非完全错误,但并未像S7操作系统那样进行优化。

您还可以使用AnTuTu对它们进行基准测试……得分大约为五分之一。

我想S7可能有Snapdragon 820 ...

答案 1 :(得分:0)

结果证明那只是一个坏电话。真尴尬我借用了朋友的S3,我的基准测试显示性能降低了约50%(〜10毫秒),对于更老的手机来说,这是正常的期望。奇怪的是我的S4完美地工作了-太慢了。伙计,那是我一个星期都不会浪费的浪费时间。