如何在 Java 16 中将 UUID 转换为 jdk.incubator.vector.Vector,反之亦然

时间:2021-07-12 07:23:00

标签: java uuid simd

从 UUID 转换为 jdk.incubator.vector.Vector(不确定哪种基本类型,可能是 Float?)的最佳方法是什么?反之亦然?

1 个答案:

答案 0 :(得分:0)

我不确定“最佳”方式,因为这取决于您之后需要对向量执行的操作以及您的机器架构,但 UUID 可以转换为两个元素的 64 位整数向量使用 UUID.getLeastSignificantBits()UUID.getMostSignificantBits() 取其两半:

UUID uuid = UUID.randomUUID();
LongVector vector = LongVector.fromArray(LongVector.SPECIES_128, new long[] {uuid.getLeastSignificantBits(), uuid.getMostSignificantBits()}, 0);

反之,使用LongVector.lane()

UUID x = new UUID(vector.lane(1), vector.lane(0));

(假设元素顺序与第一个示例相同)