在HTML5画布中重新绘制彩色圆圈,将值存储在数组中或每次重新计算颜色的更好方法
Better approach to re-draw colorized circles in HTML5 canvas, store values in array or recalculate color every time?
我得到了几个对象,每个对象都有优先级值。优先级值可以介于 1(最低)到 200(最高)之间。
每个值都由一种颜色表示,最低值为绿色"rgba("0","255",0,1)";
最高值为"rgba("255","0",0,1)";
我通过经典方程计算颜色值,其中每个优先级值确定不同的值(不同的颜色)。所以最后,根据优先级,我有可能获得从绿色(0)到黄色(100)到红色(200)的200种不同颜色的机会。
我的问题是:当我每 100 毫秒在画布上重绘所有对象时。是否最好每次计算这些值以获得所需的颜色,还是在初始化函数中仅生成一次 200 种颜色的数组,其中 array[100]
上的值将是优先级为 100 的对象的颜色。
我希望不会有太大的差异,但其中一种方法必须更好。
在几乎所有情况下,计算一次都是更好的选择(通常称为查找表)。内存比 CPU 周期便宜,这意味着消费类硬件具有大量 RAM,但始终需要周期。
在这种情况下,你是对的,即使在16.666...ms(60fps)的全帧速率下,每100ms200种颜色也是微不足道的,但是客户端将在设备上运行许多应用程序/选项卡/服务,程序员为减少CPU负载所做的任何事情都将使客户端受益。
还有一个额外的好处是程序员往往会忘记。CPU 周期需要比内存多得多的功率。对于一台机器来说,增加几百万个周期并不算什么,但如果每个程序员都以降低整体负载的方式编写,那么全世界节省的电力是相当可观的。我现在要去拥抱一棵树,希望有帮助。
从问题中,我知道您不希望颜色的计算影响您的动画,请使用 Web worker 在单独的线程上运行您的计算 网络工作者
还有一件事 一次读取所有样式和一次写入样式 不要一起读/写,因为它可能会导致布局抖动 布局抖动
- 有没有更好的动手、具体的方法来学习Javascript
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- 在JavaScript中拆分日期字符串的更好方法是什么
- 为什么$.brower被弃用?还有什么更好的替代方案
- 设置嵌套对象属性的更好方法
- 您有更好的动态方式来缩短复杂的代码jquery吗
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 什么更好?使用iframe或jQuery之类的东西在外部网站中加载HTML文件
- 将数组从javascript格式化为php的更好方法,反之亦然
- jquery:将动画绑定到滚动条位置的更好方法
- 有更好的方法吗?(递归解析HTML unicode实体)
- 在Knockoutjs中设置计算对象的observableArray的更好方法
- 计算某些字符串值的更好方法
- 更好的比率计算100:121 ->1:1.21
- 有没有更好的方法来计算内容的年龄
- 在HTML5画布中重新绘制彩色圆圈,将值存储在数组中或每次重新计算颜色的更好方法
- 是否有比使用多个FOR更好的方法来基于更多的标准来计算特定的值