【发布时间】:2014-01-16 21:52:13
【问题描述】:
假设我有一个 900x900 HTML5 Canvas 元素。
我有一个名为computeRow 的函数,它接受网格上的行数作为参数,并返回一个包含 900 个数字的数组。每个数字代表一个 0 到 200 之间的数字。有一个名为 colors 的数组,其中包含一个字符串数组,例如 rgb(0,20,20)。
基本上,我的意思是我有一个函数可以逐个像素地告诉画布上给定行中的每个像素应该是什么颜色。多次运行这个函数,我可以计算出画布上每个像素的颜色。
运行computeRow 900次的过程大约需要0.5秒。
但是,图像的绘制时间比这要长得多。
我所做的是我编写了一个名为drawRow 的函数,它接受一个包含 900 个数字的数组作为输入并将它们绘制在画布上。 drawRow 的运行时间比 computeRow 长得多!我该如何解决这个问题?
drawRow 非常简单。它看起来像这样:
function drawRow(rowNumber, result /* array */) {
var plot, context, columnNumber, color;
plot = document.getElementById('plot');
context = plot.getContext('2d');
// Iterate over the results for each column in the row, coloring a single pixel on
// the canvas the correct color for each one.
for(columnNumber = 0; columnNumber < width; columnNumber++) {
color = colors[result[columnNumber]];
context.fillStyle = color;
context.fillRect(columnNumber, rowNumber, 1, 1);
}
}
【问题讨论】:
标签: javascript html performance canvas html5-canvas