是否instanceof
关键字熊与它在Android平台上相对较重的影响,(多speciffically运行在Dalvik VM的手机?影响
影响
回答
我不认为instanceof
熊在Dalvik虚拟机更重的影响相对于JVM。
如果您有任何疑问,你可以看到自己,当你运行了一个名为分配跟踪工具,标配作为DDMS工具应用程序。
这有助于感谢。 – Michiel 2010-02-14 01:22:29
我发现t帽子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)));
你的同样是无稽之谈,i和j不在循环之后使用,所以很有可能循环从正在运行的代码中被忽略,因为它们在运行它们时没有意义。 – 2010-02-21 08:45:36
明智的话,我应该检查一下;谢谢。然而,这给我留下了一些问题:如何加快速度,以及为什么随着“周期”的增加,时间会增加。 我会记住您在将来构建测试时所指出的内容。 – Michiel 2010-02-21 11:37:49
- 1. 影响
- 2. 影响
- 3. 影响
- 4. 影响
- 5. 影响
- 6. 影响
- 7. 影响
- 8. 影响
- 9. 影响
- 10. 影响
- 11. 影响
- 12. 影响
- 13. 影响
- 14. 影响影响所有在css按钮
- 15. Klout中的影响者和影响力
- 16. 阴影效果的影响
- 17. 影响查询
- 18. 影响/上Weblogic10.3.0
- 19. 奇怪影响
- 20. 的iOS:HMGLTransition影响
- 21. 从影响chlidren
- 22. 影响变量
- 23. 影响父只
- 24. 影响MySQL的
- 25. NGRX - 上影响
- 26. HTML5的影响,
- 27. TYPE_INT_ARGB_PRE的影响
- 28. 影响登录
- 29. 影响SO_SNDBUF
- 30. SocketServer.Accept()影响?
为什么你会对Android产生较大的影响而不是Java? – 2010-02-13 23:14:12
安东尼,因为它是一个完全不同的虚拟机,基于寄存器而不是基于堆栈? – 2010-02-13 23:20:02
为什么instanceof会创建垃圾? instanceof测试对象是否是某种类型的实例,它不涉及方法调用或对象创建。你为什么要问一个毫无意义的问题,加入毫无意义的无关VM概念? – 2010-02-21 08:47:29