Question

Est-ce que l'ours mot-clé instanceof avec un impact relativement plus lourd sur la plate-forme Android (et plus speciffically les téléphones mobiles exécutant le Dalvik VM?

Était-ce utile?

La solution

Je ne pense pas que instanceof porte un impact plus lourd sur la machine virtuelle Dalvik opposée à la machine virtuelle Java.

Si vous avez des doutes, vous pouvez voir par vous-même lorsque vous exécutez votre application avec un outil appelé Tracker Allocation qui est livré en standard comme outil pour le DDMS.

Autres conseils

Je trouve que instanceof est le plus souvent plus rapide (environ 60-85% du temps). Toutefois, ce pourcentage tombe lorsque le téléphone est présenté avec une activité de fond (par exemple GC, toucher, boutons, secouer, etc.), mais reste plus rapide instanceof supérieure à 50% du temps. Lorsque le nombre de cycles est fait très grand (à savoir> 1000000) instanceof est presque toujours plus rapide. L'ordre dans lequel les deux boucles tandis que sont présentées (à savoir d'abord la boucle de instanceof, puis la boucle de contrôle de champ) affecte les résultats, mais reste instanceof le plus rapide.

        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)));        
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top