Разница во времени выполнения для простого цикла: как получилось? - PullRequest
0 голосов
/ 17 ноября 2018

Я заметил значительную разницу во времени выполнения даже для простого цикла на двух похожих, но разных устройствах, то есть Samsung Galaxy S4 и S7. На S7 тест ниже занимает ~ 5 мс, а на S4 ~ 250 мс, разница в 50 раз. Я уверен, что S7 быстрее, чем S4, но в 50 раз ???

Я попробовал 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.

Я бью уже неделю без дополнительной информации.
У кого-нибудь есть идеи по этому поводу или я просто неудачник?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Ну, оказывается, это был просто плохой телефон . Как неловко. Я позаимствовал у друга S3, и мой тест показал примерно на 50% меньшую производительность (~ 10 мсек), что, я думаю, является нормальным ожиданием для еще более старого телефона. Что странно, мой S4 работал отлично - просто медленно. Мальчик, это была неделя потерянного времени, я никогда не вернусь.

0 голосов
/ 17 ноября 2018

на самом деле, это Exynos 5 против Snapdragon 820 или Exynos 8 ЦП. уровень API также играет роль там; и количество ядер и сколько из них используются параллельно. только вчера прочитал Q & A , который сравнивал C & Java с ARM & x86. или ОС на S4 могла быть скомпилирована с неправильными флагами; не совсем неправильно, но не оптимизировано как S7 ОС.

Вы также можете сравнить их с AnTuTu ... где счет составляет примерно пятую часть.

Я предполагаю, что S7 может иметь Snapdragon 820 ...

...