我的Scala / Java代码具有大(数百兆)整数数组。我将使用int[]
从此java.nio
尽可能快地发送这些内容(不复制内容)。另外,当我在nio
套接字通道上收到任何数据时,我会将其用作int[]
,而不进行复制。
所有nio
操作都需要ByteBuffer
,而ByteBuffer
只能包装byte []
。
我可以分配一个ByteBuffer
,然后使用asIntBuffer
放置我的数组,但是它将复制随机数组,因此我必须将数据存储两次。
val size = 1234
val random = Array.fill[Int](size) { scala.util.Random.nextInt(1000) }
val buf = ByteBuffer.allocate(4 * size)
buf
.asIntBuffer()
.put(random)
我正在使用panama openjdk项目,因此任何新技巧(例如使用Pointer<>
)都可以帮助我。
TL; DR:在Java或Scala中,如何以ByteBuffer
和int[]
的形式访问我的整数数组。