为了体现效率方面的变化,我在surfaceview中设定一个变量记录了每60秒游戏中,真正执行代码的时间总和(游戏中使用了50ms为周期的while循环,一周期中不到50秒的会调用sleep()补全时间。这个测试时间就是累加了每个周期中执行游戏逻辑的时间)。
对修改前和修改后的程序,我分别做了二十次测试,取平均值。
意外的是,在我作出如上修改之前,平均值为23.690ms,调整代码后,测试时间平均值均为23.873ms,如此看来,反而修改后的代码有了略微的劣势。
总结:
个人认为,第一、第二条中所讲都是常规编程需要注意的内容,可以确信。
而第三条,作为应对CPU、内存能力有限的移动终端,理论上似乎不错,但实际结果运行却并不如意。
个人猜想,是否是Dalvik虚拟机本身已经对成员变量的访问方面做过了优化? 在网上搜了下,大多都说道,Dalvik是基于寄存器的虚拟机,而常规的JVM是基于栈的虚拟机。对于Dalvik , 在经过SUN JDK编译器生成字节码.class后,还会用DX工具再次优化生成.dex文件。 或许两者本身优化策略的不同,导致了这一试验结果。
没有找到更多关于Dalvik的介绍,附一觉得不错的链接:Dalvik虚拟机浅识1 。
欢迎大家探讨。