代码之家  ›  专栏  ›  技术社区  ›  Michiel

Android Java代码中instanceof的影响

  •  9
  • Michiel  · 技术社区  · 16 年前

    instanceof 关键字对Android平台(更具体地说是运行Dalvik虚拟机的手机)的影响相对更大?

    2 回复  |  直到 13 年前
        1
  •  3
  •   Anthony Forloney    16 年前

    我不认为 instanceof 对Dalvik VM的影响比JVM更大。

    如果您有任何疑问,您可以在使用名为 分配跟踪器 作为DDMS的标准工具。

        2
  •  1
  •   Michiel    16 年前

    两个while循环的出现顺序(即先是instanceof循环,然后是field check循环)会影响结果,但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)));