var string = '';
var array = [];
for(var i = 0; i < 10000; i++){
string += '0';
array.push(0);
}
哪一个会更小?什么时候/哪里是两者之间的断点?
注意:数字总是1位数。
创建数组比创建字符串快约50%。
答案 0 :(得分:4)
基于answer here,您可以粗略计算JavaScript中不同数据类型的大小。
使用的与您的问题直接相关的公式,以字节为单位计算大小:
string = string.length * 2
number = 8
基于此,array
变量的大小取决于放置在其中的内容类型。当您插入数值时,每个偏移量将为8个字节,因此:
array[number] = array.length * 8
使用这些等式,大小为:
string = 20000
array = 80000
如果您改为使用array.push('0')
(即使用字符串),则string
和array
的大小应大致相等。
参考文献:
The String Type - EMCAScript Language Specification:
String类型是零个或多个16位无符号整数值的所有有序有序序列的集合。
The Number Type - EMCAScript Language Specification:
Number类型具有18437736874454810627(即264-253 + 3)值,表示IEEE标准二进制浮点运算中指定的双精度64位格式IEEE 754值
答案 1 :(得分:0)
要在数组中存储小数字,最好的方法是使用Int8Array (https://developer.mozilla.org/en-US/docs/Web/API/Int8Array)。
答案 2 :(得分:-1)
阵列总是会更快。
使用字符串,每次追加时,运行时必须为新字符串分配空间,然后丢弃字符串的最后一个版本。
使用数组,它只是扩展一个链表。
http://en.wikipedia.org/wiki/Linked_list
另一方面,字符串可能会占用更少的内存,因为所有数据都在一个连续的RAM块中,而数组也将包含数据和所有链接列表指针。