Учитывая ваш вариант использования, JNI не будет работать быстрее, чем JNA.
Что дорого в Java-нативном взаимодействии, так это передача большого объема памяти. В частности, сделать Java-память доступной для собственного кода может быть очень дорого; IIRC это отчасти потому, что Java может выбрать сегментирование памяти по своему усмотрению, но нативный код будет ожидать смежные куски памяти - перемещение / копирование памяти занимает некоторое время.
Если вы беспокоитесь о производительности, убедитесь, что в вашем коде JNA используется доступ в «прямом» стиле, а не в исходном доступе в стиле интерфейса.
Кроме того, если вам нужно передавать большие объемы памяти между Java и собственным кодом, вам следует рассмотреть возможность использования единственного начального прямого выделения (если возможно) и избегать перераспределения этой памяти на регулярной основе. Таким образом, вы оплачиваете стоимость распределения только один раз и в начале, поэтому при большом количестве вызовов эта стоимость становится незначительной.