Java отлично подходит для векторных расчетов на современном оборудовании.К сожалению, растровые библиотеки, написанные исключительно на Java (например, ImageJ), работают намного медленнее, чем их собственные аналоги.Из того, что я вижу, это происходит потому, что:
- Невозможно использовать векторные инструкции CPU;
- Проверка дополнительных границ при итерации по пиксельным массивам;
- Сборщик мусора, который может начать работать в середине вашего алгоритма.
После попытки нескольких подходов мы закончилис собственной библиотекой, основанной на FreeImage и TurboJPEG, которая выполняет обработку для нас.Наше приложение Java ( Visual Watermark ) вызывает его через интерфейс JNI.