Вам нужно будет выполнить какое-то профилирование, чтобы выяснить, что происходит.Тем не менее, я держу пари, что причина разницы в производительности заключается в буферизации.Говоря логически, JPEG рассматривает данные как имеющие разные форматы на разных этапах сжатия.
Входными данными обычно является массив 24-битных значений цвета.Они преобразуются в YCbCR, давая другой массив значений цвета.Они часто подразделяются, поэтому в них содержатся логические массивы Cb и Cr, которые меньше массива Y.
Для DCT предыдущие массивы принимают другую форму;массив массивов 8x8.
Для вывода DCT у вас есть 16-битный массив пикселей.
Управление этими различными массивами, вероятно, является источником разницы в производительности.Исключая физические преобразования, вы можете добиться наибольшего улучшения производительности.