我正在对我们的代码在一台性能通常很好的OPO设备上进行基准测试,但是我发现有很多“奇怪”的性能问题。在深入挖掘Android本地代码之前,我想在这里问一下。
我看到的是调用
现在绘制矩形是在GPU上进行的,所以我想我不会看到任何开销。但是为什么我对绘画颜色有开销呢?
作为自然的后续,如何减少上述开销?
我还看到了相当多的canvas.restore()的开销(大约比上面的代码慢4倍),但我想这是有道理的,因为它可能是一个复杂的操作。我只是不明白为什么setColor会很慢?
为记录,我使用System.nanoTime()在OPO上测试了性能,并且在性能方面相当稳定(不是突然的GC故障或其他问题)。
我看到的是调用
paint.setColor(argbInt)
需要大约5倍于以下调用的执行时间:paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(false);
canvas.drawRect(x, y, x + w, y + h, paint);
paint.setAntiAlias(antialias);
现在绘制矩形是在GPU上进行的,所以我想我不会看到任何开销。但是为什么我对绘画颜色有开销呢?
作为自然的后续,如何减少上述开销?
我还看到了相当多的canvas.restore()的开销(大约比上面的代码慢4倍),但我想这是有道理的,因为它可能是一个复杂的操作。我只是不明白为什么setColor会很慢?
为记录,我使用System.nanoTime()在OPO上测试了性能,并且在性能方面相当稳定(不是突然的GC故障或其他问题)。