android– 为什么算法这么慢?

android– 为什么算法这么慢?,第1张

概述我正在创建一个折线图,我最初使用的代码绘制速度很慢,以至于无用.我用在网上找到的代码替换它,它变得更快.我只是好奇为什么原始代码是如此之慢.下面发布的所有代码都在自定义视图的onDraw()方法中:原始慢代码:floatyStart=300f;for(inti=0;i<values.length;i+

我正在创建一个折线图,我最初使用的代码绘制速度很慢,以至于无用.我用在网上找到的代码替换它,它变得更快.我只是好奇为什么原始代码是如此之慢.下面发布的所有代码都在自定义视图的onDraw()方法中:

原始慢代码:

    float yStart = 300f;    for (int i=0; i < values.length; i++){                      drawPath.moveto(xStart, yStart);        drawPath.lineto(xStart+10, values[i]);        drawPath.close();        canvas.drawPath(drawPath, linePaint);        xStart += 10;        yStart = values[i];     }

后来的快速代码:

            float datalength = values.length;            float colwIDth = (wIDth - (2 * border)) / datalength;            float halfcol = colwIDth / 2;            float lasth = 0;                            for (int i = 0; i < values.length; i++) {                float val = values[i] - min;                float rat = val / diff;                float h = graphHeight * rat;                if (i > 0)                    canvas.drawline(((i - 1) * colwIDth) + (horStart + 1) + halfcol, (border - lasth) + graphHeight, (i * colwIDth) + (horStart + 1) + halfcol, (border - h) + graphHeight, linePaint);                lasth = h;

我只是不明白为什么一个人比另一个人更有效率.有任何想法吗?

解决方法:

使用Paths使绘图明显慢于简单地告诉Canvas在两点之间绘制直线,因为Path是一个比drawline()使用的2点更复杂的对象.路径也根据油漆中的样式填充和构图,这也可能导致减速.

通常,在循环中使用对象并调用许多方法会降低代码的速度.

总结

以上是内存溢出为你收集整理的android – 为什么算法这么慢?全部内容,希望文章能够帮你解决android – 为什么算法这么慢?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1105333.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存