Написать «сжатый» массив для повышения производительности ввода-вывода?

У меня есть массивы int и float длиной 220 миллионов (фиксированных ). Теперь я хочу сохранить/загрузить эти массивы в/из памяти и на диск. В настоящее время я использую FileChannel и MappedByteBuffer Java NIO для решения этой проблемы. Он работает нормально, но занимает около 5 секунд (Время настенных часов )для сохранения/выгрузки массива в/из памяти на диск. Теперь я хочу сделать это быстрее.

Здесь я должен упомянуть, что большинство этих элементов массива равны 0 (почти 52 % ).

нравится:

int arr1 [] = { 0, 0, 6, 7, 1, 0, 0...}

Может ли кто-нибудь помочь мне, есть ли хороший способ повысить скорость, не сохраняя и не загружая эти 0. Это можно компенсировать с помощью массива Arrays.fill (, 0 ).

7
задан Arpssss 6 July 2012 в 19:10
поделиться