例如我想比较“数组数组”与“数组字符串”来存储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的内存使用情况?
答案 0 :(得分:1)
您可以考虑V8 profiler。使用它的标志,您可以获得堆使用。可能这就是你所需要的。
答案 1 :(得分:0)
您可以使用JSON.stringify(array).length
来获取数组的总长度,除此之外,数组没有我知道的size
属性。
如果括号干扰大小,您可能希望使用JSON.stringify(array).replace('[','').replace(']','').length
。 (我知道可能有一个正则表达式删除那些,但我不熟悉正则表达式)