我有几个对象,每个对象都有优先级值。优先级值可以在1(最低)到200(最大)之间。每个值均用颜色表示,最小值为绿色"rgba("0","255",0,1)";
,最大值为"rgba("255","0",0,1)";
我通过经典公式计算颜色值,其中每个优先级值确定不同的值(不同的颜色)。因此,最终我根据优先级获得了从绿色(0)到黄色(100)到红色(200)的200种不同颜色的机会。
我的问题是:每100毫秒在画布上重画一次所有对象时。更好的方法是每次计算这些值以获得所需的颜色,还是在初始化函数中仅生成一次ONCE(由200种颜色组成的数组),其中array[100]
上的值将是具有100个优先级的对象的颜色。
我希望不会有太大的不同,但是其中一种方法必须更好。
最佳答案
几乎在每种情况下(通常称为查找表),一次计算都是更好的选择。内存比CPU周期便宜,这意味着消费类硬件具有大量RAM,但始终需要周期。
在这种情况下,您是正确的,即使在全帧速率为16.666 ... ms(60fps)的情况下,每100毫秒200种颜色也是微不足道的,但是客户端将在设备上运行许多应用程序/选项卡/服务,并且程序员可以做任何减少CPU的工作负载将使客户受益。
程序员往往会忘记一个额外的好处。 CPU周期比内存需要更多的功率。对于单台机器而言,增加几百万个周期是没有什么,但是如果每个程序员以减少整体负载的方式编写代码,那么全球范围内的节能效果将是可观的。我现在要抱一棵树,希望能帮上忙。
关于javascript - 更好的方法来在HTML5 Canvas 中重新绘制彩色圆圈,将值存储在数组中还是每次都重新计算颜色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38410153/