JavaScript/TypeScript中的连续分配数组,带有字符串
我有一个这样的系统:JavaScript/TypeScript中的连续分配数组,带有字符串,javascript,arrays,typescript,memory-management,v8,Javascript,Arrays,Typescript,Memory Management,V8,我有一个这样的系统: interface Data { x: number; y: number; n: string; } const array = Array<Data>(100); interface Data { x: Float64Array; y: Float64Array; n: ????; } const dataAr
interface Data {
x: number;
y: number;
n: string;
}
const array = Array<Data>(100);
interface Data {
x: Float64Array;
y: Float64Array;
n: ????;
}
const dataArray = {
x: new Float64Array(100),
y: new Float64Array(100),
n: ????????
} as Data
但是,我不知道如何在这样的数组中存储字符串。var dataArray=newarray100将为您提供一个包含100个指针的连续数组,因此从这个意义上讲,它将类似于C,而不是字典。dataArray[0]=新的Datax,y,n将在数组外部分配一个新的数据对象,并在数组的第一个插槽中存储指向它的指针。在这样的数据对象中,在64位平台上,V8可以将数字直接存储在示例中的对象x和y中,而字符串和其他对象将始终存储为指向另一个对象的指针。在只包含数字的数组中,V8还可以将数字直接存储在数组中,因此不需要使用Float64Array
总而言之,任何性能差异都可能太小而无关紧要,因此我建议您编写对您最有意义、可读性最好、最适合您的算法/数据模型等的代码。V8开发者在此。var dataArray=newarray100将为您提供一个包含100个指针的连续数组,因此从这个意义上讲,它将类似于C,而不是字典。dataArray[0]=新的Datax,y,n将在数组外部分配一个新的数据对象,并在数组的第一个插槽中存储指向它的指针。在这样的数据对象中,在64位平台上,V8可以将数字直接存储在示例中的对象x和y中,而字符串和其他对象将始终存储为指向另一个对象的指针。在只包含数字的数组中,V8还可以将数字直接存储在数组中,因此不需要使用Float64Array
尽管如此,任何性能差异都可能太小而无关紧要,因此我建议您编写对您最有意义、可读性最好、最适合您的算法/数据模型的代码,等等