Android Java代码中'instanceof'的影响

instanceof关键字是否会对Android平台造成相对较重的影响(更具体地说,运行Dalvik VM的手机?

Solutions Collecting From Web of "Android Java代码中'instanceof'的影响"

我不认为instanceof会对与JVM相反的Dalvik VM产生更大的影响。

如果您有任何疑问,那么当您使用名为Allocation Tracker的工具运行应用程序时,您可以亲自看到它,该工具是DDMS工具的标准工具。

我发现instanceof大多更快(大约60-85%的时间)。 然而,当手机呈现背景活动(例如GC,触摸,button,晃动等)时,这个百分比会下降,但是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)));