首页 > 解决方案 > 简单循环执行时间的巨大差异:怎么会?

问题描述

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

我试过 Android Profiler (CPU, MEMORY) 但没有看到任何危险信号。S7 应用程序以大约 10% 的 CPU 运行,而 S4 以大约 25% 的速度运行。

下面的代码是我实际应用程序的大量摘录。

    //@ 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
    }

我认为这可能是优化方面的差异,但如果我将真正的(不可优化的)处理放入循环中,则没有相对差异。Debug 和 Release 版本之间也没有任何区别。

我已经打败了一个星期了,没有额外的洞察力。
有人对此有任何想法,还是我只是运气不好?

标签: androidperformancecpu-usage

解决方案


事实证明这只是一部坏手机。多么尴尬。我借了一个朋友的 S3,我的基准测试显示性能降低了约 50%(约 10 毫秒),我认为这对于更旧的手机来说是正常的预期。奇怪的是我的 S4 运行良好- 只是速度很慢。男孩,那是浪费了一周的时间,我再也回不来了。


推荐阅读