
Выпущена новая версия утилиты NIOBench v0.42, основанная на применении популярного фреймворка java.NIO. С его помощью удается оптимизировать файловый ввод-вывод за счет асинхронных неблокирующих операций, а также минимизации вспомогательных преобразований и пересылок данных при взаимодействии виртуальной java-среды и реальных аппаратных средств платформы. Концепция каналов и буферов, положенная в основу этого фреймворка, максимально соответствует модели передачи информации между mass storage устройством и оперативной памятью. Немаловажное значение имеет применение прямых буферов, непосредственно представляющих диапазоны оперативной памяти и создаваемых методом ByteBuffer.allocateDirect();
Доступ к файлам реализуется средствами объекта FileChannel. Методы этого объекта, в частности read(), write(), transferTo() используются соответственно для чтения, записи и копирования файлов, как нетрудно догадаться из их названия. Измерение времени базируется на прецизионном методе System.nanoTime(), он возвращает результат в наносекундах, хотя реальная гранулярность приращений таймера может быть в десятки раз больше одной наносекунды и зависеть от реализации JVM.
В версии NIOBench 0.42 добавлена поддержка атрибута SPARSE, сообщающего процедурам обслуживания, что создаваемый файл будет использован для хранения разреженных (поддающихся сжатию) данных. Теоретически, это создает предпосылки для оптимизации на уровне управления накопителем и файловой системы. На практике, ОС может и проигнорировать данный атрибут. Опционально, тестовые файлы могут заполняться нулями, либо псевдослучайными данными. Приложение снабжено нативными библиотеками, подключаемыми посредством интерфейса JNI (Java Native Interface) и обеспечивающими поддержку аппаратного источника энтропии.
Принципиально, что процесс генерации псевдослучайных последовательностей вынесен за пределы измеряемых интервалов времени, так как объектом бенчмарок являются дисковые операции. В отличие от большинства представленных в интернете программных средств, NIOBench знакомит пользователя со всеми промежуточными метриками. Их результирующая обработка основана на применении медианы и среднего арифметического. Полный протокол тестирования можно увидеть в текстовом рапорте программы.