问题
e.g:
array1 = [0,0,0,0,1,2,2,2,2,0,2,2,0,1,..etc]
array2 = [1,1,1,1,1,1,2,2,2,2,0,2,2,1,..etc]
我想测试相关性,所以理想情况下,这些数组中的每个元素都应该有两个属性:
我不喜欢直接复制,但这不是必须的。
我的尝试1
我想过将数组中的每个元素转换为Object
{
data: 0, // or 1 or 2
pointer: other_array[some_index].data
}
(我希望blah.data返回一个指针,而不是数据)
但这感觉它会减慢数据的检索速度,因为它们现在可能分散在非连续的内存中。
我的尝试2
我没有使用Object数据,而是认为我将每个数组转换为两个关联数组:
my_array = {
data_array: [0,1,2,2,2,2,1,1,1,1,1,2,2,2],
pter_array: [o_a.data_array[0], o_a.data_array[1], o_a.data_array[2], ... ]
};
(其中o_a是some_array)
这种方式似乎data_array至少会更连续,并且检索有望更快,但我的指针数组可能不是指针。
问题:
enum
(通过bools?)会更高效,还是会浪费与JS数字类型一样多的空间?< / LI>
答案 0 :(得分:2)
第一次尝试是明确有意义的:它在逻辑上对相关信息进行分组。第二个没有。
这可能只是一个美学问题,但根据您的使用情况,它可能会变得更多。例如,如果您需要删除或插入元素,该怎么办?您的第二次尝试需要重复操作,以确保两个阵列保持同步。
你担心表现,但目前尚不清楚原因。你是否真的创造了表现不佳的代码,或者这只是推测?
我的建议是:
没有特别的理由认为对象方法效率低下。你可以创建这些对象的数组,因此它并不意味着所有东西都会分散在非连续的内存中。#/ p>
如果