【发布时间】:2012-12-17 14:30:45
【问题描述】:
我需要在 HTML5 画布上绘制很多点,这需要很长时间。我的代码如下所示:
var points = getPoints() // Array of {x,y,color}
var ctx = canvas.getContext("2d");
for (var i = 0; i < points.length; i++) {
ctx.fillStyle = points[i].color
ctx.beginPath()
ctx.arc(points[i].x, points[i].y, radius, 0, Math.PI * 2, true)
ctx.fill() }
我想知道我可以做哪些性能调整来加快速度。我只有5种不同的颜色。例如,我是否会受益于对点列表进行即时排序以仅更改 ctx.fillStyle 5 次而不是每个点一次?
【问题讨论】:
-
我认为这条线很慢:
ctx.arc(points[i].x, points[i].y, radius, 0, Math.PI * 2, true)尝试绘制简单的矩形,看看是否加快了速度。 (恕我直言,它应该...) -
我试过了,是的,它确实加快了速度。但是,我看不出这有什么帮助。
-
我认为如果你设置一个小提琴它会更容易让人们调整它,这里有一些我能想到的修改让它更快一点(也许)-> FIDDLE ...
-
@Stewie 绘制弧线需要大量计算。填充矩形要简单得多...
-
“many”是多少,“pretty long”是多少?
标签: javascript html canvas html5-canvas