我在onDraw()方法的调用堆栈中有一个3级的方法.它被称为数百次,有时每次重绘数千次.我已经对onDraw()方法进行了大量的分析,我可以看到以下方法占总数的14%,所以绝对值得一看.我需要在压缩缩放和拖动操作期间提高帧速率.
private void getVisiblePointsFromPath(){
double longRads = longitude * (Math.PI / 180);
double latRads = latitude * (Math.PI / 180);
...
}
当方法退出并且双精度超出范围时,我认为它们符合GC的条件,尽管我认识到这可能发生时是非确定性的.
这样做有什么好处:
public class GisView extends ImageView{
private double longRads;
private double latRads;
private void getVisiblePointsFromPath(){
longRads = longitude * (Math.PI / 180);
latRads = latitude * (Math.PI / 180);
...
}
}
我假设这个习惯用法会导致双打被取消,然后在每次传递时重新分配,但不会产生额外的垃圾,从而减少了我造成的GC数量.或者VM比那更聪明?
请注意,我的问题本身并不是“哪个更快”,而是关于哪个可能导致GC减少.我可以测量速度差异,但我不太了解Dalvik VM和Android GC来预测哪个导致更少的垃圾.