以下是它的小提琴:https://jsfiddle.net/rujbra6y/3/
我已经记录了速度所以进行任何更改,只需重新运行几次,看看性能是否会提高。
已经工作了几个小时,我想不出任何其他我可以改变以使其更快。我希望它尽可能快,因为当用户使用floodfill
时会有一个小延迟,并且为了获得正确的用户体验,我希望延迟尽可能短。
我可以使用更多的优化或黑客来提高速度吗?
答案 0 :(得分:1)
您可以在短暂的一瞥中做几件事:
Uint8ClampedArray
替换Uint32Array
。这样可以避免不必要的移动和ANDing操作Uint32Array唯一需要注意的是字节顺序是little-endian,这意味着你需要提供0xAABBGGRR格式的目标颜色(或者做一个初始的位移给出r,g,b作为单独的值)。
通过这些更改(除了最后一次),代码在我的计算机上从大约69-75ms下降到58-61ms(目前是i5)。
<强> Updated fiddle 强>
我将把堆栈的类型数组作为练习。 : - )