Android 如何提高像素绘制过程性能?
也许这对你们大多数人来说都是一个简单的问题,但在Kotlin中是否有其他的循环计数器。我需要它来提高性能。我在模板中使用嵌套循环只是为了检查这种方法是否合理,现在我想加快速度 我的循环如下所示:Android 如何提高像素绘制过程性能?,android,performance,kotlin,Android,Performance,Kotlin,也许这对你们大多数人来说都是一个简单的问题,但在Kotlin中是否有其他的循环计数器。我需要它来提高性能。我在模板中使用嵌套循环只是为了检查这种方法是否合理,现在我想加快速度 我的循环如下所示: val rectF = RectF() for (y in 0 until 256) { for (x in 0 until 256) { pos = getIndexOfMax(results!![0][y][x]) if (pos > 0) {
val rectF = RectF()
for (y in 0 until 256) {
for (x in 0 until 256) {
pos = getIndexOfMax(results!![0][y][x])
if (pos > 0) {
rectF.left = (x / 256f * w) - xw
rectF.top = (y / 256f * h) - xh
rectF.right = (x / 256f * w) + xw
rectF.bottom = (y / 256f * h) + xh
canvas.drawRect(rectF, boxPaint)
}
}
}
正如您所看到的,“x”和“y”在这里是计算盒子位置所必需的。我需要加快一点(或更多)绘制过程,但我不知道如何在这里使用
.map
,因为我只看到了使用.map
的foreach
循环的示例。很抱歉,我不像Kotlin的老手,我以前使用嵌套循环,因为这些循环不会造成显著的性能损失。这是迭代的最快方法。您可以通过避免执行两次浮点除法操作来优化现有的内容。您可以将画布变换移动半个像素,这样就不必减去半个像素的宽度…只需为右侧和底部添加完整的像素宽度。但是,我认为使用位图对象,然后将位图绘制到画布上可能会快得多。绘制的每个矩形有四个顶点,每个顶点都有颜色和位置信息。四个顶点中的每一个都必须乘以一个矩阵才能将其定位到矩阵上。这是一个非常低效的方式做像素艺术。位图允许您以有效的方式修改单个像素。许多Kotlin标准库集合迭代函数(如map()
)应用于性能关键的任何功能。他们创建一个全新的列表,在修改时将所有内容从一个集合复制到另一个集合。MutableList
中修改列表内容的功能正常。而且,forEach
很好,因为它不会创建新列表。