Код
My 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[]
.