如何找出数组在初始化时需要多长时间?
问题描述:
想象一下,我有一个字节数组ID。如何找出数组在初始化时需要多长时间?
后来我想数据这种方式存储在它:
ids[cz << 24 | cx << 16 | y << 8 | z << 4 | x]
CZ,CX,Y,Y,Z,X在这种情况下int类型。
那么当我创建它时,数组需要多长时间? 我想我必须初始化数组是这样的:
byte[] ids = new byte[maxCz * maxCx * maxY * maxZ * maxX];
但它总是给我一个ArrayIndexOutOfBoundsException。
答
OR-ed表达式中最大的组件是cz << 24
。假设maxCz
是2 ķ -1,剩余max
值的方式选择用于不同部件的位不重叠,则需要分配
byte[] ids = new byte[(maxCz+1) << 24];
当maxCz
是7,这是一个128 MB的分配,所以阵列将会非常大。
不知道'maxCz','maxCx','maxZ'或'maxX'在这里很难帮到你。 –
它们表示cz,cx,x,y,z的最大值。例如:int cx = 7,int cz = 7,x = 16,y = 256,z = 16。 –
这将是? –