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