2012-12-03 28 views
2

例如我想比較「數組數組」數組與字符串數組來存儲靜態畫布/圖像具有多於或少於0.5的Alpha的位,那我將需要稍後閱讀/訪問它如何測量JavaScript對象的內存使用情況

我想知道哪一個將有最少的內存使用情況,可能更快?

var c =$('$myCanvas'); 
var d = c[0].getContext('2d').getImageData().data; 
// access: d[3+4*(c.width()*y+x)] >= 0.5 

VS

var n = [ [ 2147483647, 2147483647, 2147483647 ], [ 0, 0, 0 ], ... ] 
// access: n[y][x/31|0] >> x%31 & 1 

VS

var s = [ [ 255, 255, 255, 255, ... ].to_s(), [ 0, 0, 0, 0, ...].to_s(), ... ] 
// access: n[y].charCodeAt(x/8|0) >> x%8 & 1  

注意,to_s()是一個字節數組轉換爲類似字符串這一個自定義函數:https://codereview.stackexchange.com/questions/3569/pack-and-unpack-bytes-to-strings

那些代碼可能是錯誤的,這只是我稍後將實施的概念

所以,我的問題是,如何測量d,n和s的內存使用情況?

+1

非常酷的問題,興奮的答案! – OneChillDude

+1

可能dublicate:http://stackoverflow.com/questions/1248302/javascript-object-size – Teemu

+0

謝謝你的人.. ^^ – Kokizzu

回答

0

您可以使用JSON.stringify(array).length來獲取數組的總長度,除此之外,數組沒有我知道的size屬性。

如果括號對大小產生干擾,則可能要使用JSON.stringify(array).replace('[','').replace(']','').length。 (我知道這可能是一個正則表達式,但我不熟悉正則表達式)

1

您可以考慮V8 profiler。玩它的旗幟,你可以得到堆的使用。可能這就是你需要的。

+0

這一個? https://code.google.com/p/v8/wiki/V8Profiler 它不顯示內存使用情況 – Kokizzu

+1

看這裏https://github.com/felixge/node-memory-leak-tutorial –

+0

好的+1,另一個瀏覽器呢? (firefox)^^ – Kokizzu

相關問題