2012-12-10 211 views
7

我創建的光測試的東西在這裏一個簡單的演示:http://jsfiddle.net/CGr9d/.mousemove和記憶,我是否需要優化這個與否?

當我使用Chrome瀏覽器開發工具,我得到這個記錄的內存使用情況:http://cl.ly/LSDl,它基本上走,直到某一點,然後再下去,並重新開始,直到它再次到達前期高點。

這是正常/ OK? 有什麼辦法來優化我的代碼,使其更少的內存密集型?

這是我的鼠標移動功能:

$('body').mousemove(function(e) { 
    //2000 is half the image width/height, of course used for centering 
    $('.light-circle').css({ backgroundPosition: (e.pageX-2000)+'px '+(e.pageY-2000)+'px' }); 
}); 

感謝。

+0

跆拳道是,+1 – defau1t

+1

+ 1爲酷演示 –

+0

這只是真的很酷。非常簡單,如此酷。 –

回答

4

如果選擇.light-circle匹配的元素不會改變,你可以優化有點像這樣:

var circles = $('.light-circle'); 
$('body').mousemove(function(e) { 
    //2000 is half the image width/height, of course used for centering 
    circles.css({ backgroundPosition: (e.pageX-2000)+'px '+(e.pageY-2000)+'px' }); 
}); 

這樣,你不重新查詢DOM,分配一個新的jQuery對象等每次鼠標移動等等。

但它是完全正常的在垃圾回收的環境中看到內存的增加,然後下降,然後再次上升。

+0

甚至給它一個'id'而不是'class' - 應該有一點更快的訪問...雖然我猜這不重要,現在你已經緩存它:) – Ian

+0

這很有道理!非常感謝。 –

+0

@KristofferK:不用擔心,很高興幫助! –