1

我正在制作一个非常沉重的画布效果,并且需要从用户系统中挤出每一点速度。

这是一个场景:

function ImCalledEveryMouseMove(blah,blah)
{
    var imgData = myctx.getImageData(0,0,canvas.width,canvas.height)
    var somevar1 = (some maths process);
    var somevar2 = (some maths process);
    var somevar3 = (some maths process);
    var somevar4 = (some maths process);
    var somevar5 = (some maths process);
    for(every pixel channel etc){do some stuff...
    // and so on
}

这些变量中的每一个都是在函数范围内重新创建的。

我的问题是:

这样做以降低开销的最有效方法是什么?

也许:

var imgData,somevar1,somevar2,somevar3... an so on
function ImCalledEveryMouseMove(blah,blah)
{
    imgData = myctx.getImageData(0,0,canvas.width,canvas.height)
    somevar1 = (some maths process);
    somevar2 = (some maths process);

因为没有新的内存分配?

也许:

var cache = {};
function ImCalledEveryMouseMove(blah,blah)
{
    cache.imgData = myctx.getImageData(0,0,canvas.width,canvas.height)
    cache.somevar1 = (some maths process);
    cache.somevar2 = (some maths process);

不知道为什么,但我读到一些关于这是因为动态记忆或其他东西而有利的东西,但不记得为什么..

有人可以建议吗?

4

0 回答 0