Влияние 'instanceof' в коде Java Android

Делает instanceof ключевое слово терпит его относительно более тяжелое влияние на платформу Android (и более конкретно мобильные телефоны, выполняющие VM Дальвика?

9
задан Macarse 22 March 2013 в 04:04
поделиться

2 ответа

Я не думаю, что instanceof оказывает более сильное влияние на виртуальную машину Dalvik, чем на JVM.

Если у вас есть какие-либо сомнения, вы можете убедиться в этом сами, запустив приложение с помощью инструмента под названием Allocation Tracker , который входит в стандартную комплектацию DDMS.

3
ответ дан 3 November 2019 в 07:47
поделиться

Я обнаружил, что instanceof в большинстве случаев работает быстрее (примерно в 60–85% случаев). Однако этот процент падает, когда телефон представлен в фоновом режиме (например, GC, касание, кнопки, встряхивание и т. Д.), Но instanceof остается быстрее более 50% времени. Когда количество циклов становится очень большим (т.е.> 1000000), instanceof почти всегда работает быстрее. Порядок, в котором представлены два цикла while (т.е. сначала цикл instanceof, а затем цикл проверки поля) влияет на результаты, но instanceof остается самым быстрым.

        AbstractParticle circleParticle = new CircleParticle();
        int cycles = 100000

        long now1 = System.currentTimeMillis();
        int i = 0;
        while(i<cycles) {
            if(circleParticle instanceof CircleParticle) {
                i++;
            }
        }
        long timetaken1 = (System.currentTimeMillis()-now1);

        long now2 = System.currentTimeMillis();
        int j = 0;
        while(j<cycles) {
            if(circleParticle.type == AbstractParticle.TYPE_CIRCLE) {
                j++;
            }
        }
        long timetaken2 = (System.currentTimeMillis()-now2);

        if(timetaken1 < timetaken2) {
            type1won++;
        }
        else if(timetaken2 < timetaken1){
            type2won++;
        }

        Log.d("instanceof test","type 1 favoured : "+((float)type1won/(type1won+type2won)));        
1
ответ дан 3 November 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: