如何测量javascript对象的内存使用情况

时间:2012-12-03 15:07:08

标签: javascript canvas

例如我想比较“数组数组”与“数组字符串”来存储Alpha大于或小于0.5的静态画布/图像的位,以后我需要读取/访问它

我想知道哪一个内存使用量最少而且可能更快?

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的内存使用情况?

2 个答案:

答案 0 :(得分:1)

您可以考虑V8 profiler。使用它的标志,您可以获得堆使用。可能这就是你所需要的。

答案 1 :(得分:0)

您可以使用JSON.stringify(array).length来获取数组的总长度,除此之外,数组没有我知道的size属性。

如果括号干扰大小,您可能希望使用JSON.stringify(array).replace('[','').replace(']','').length。 (我知道可能有一个正则表达式删除那些,但我不熟悉正则表达式)