Вот как я это разрешил:
bin
в каталоге проекта. Build Solution
. В VS2017 (Запуск от имени администратора)> Сборка> Создание решения. При использовании попытки Java солнца некоторые следующие системные свойства, или как параметры командной строки или как первые строки в основном
sun.java2d.opengl=true //force ogl sun.java2d.ddscale=true //only when using direct3d sun.java2d.translaccel=true //only when using direct3d[еще 114], флаги могут быть просмотрены в этот Взгляд страницы
sun.java2d.trace
, который может позволить Вам определять источник меньше желательной производительности при обработке графики.
Выполнение записи изображения на экран очень затронуто форматом, в котором хранится изображение. Если формат совпадает с памятью для хранения содержимого экрана, хочет тогда, это может быть очень быстро; если это не тогда преобразование, должен быть сделан, иногда попиксельно, который является очень медленным.
, Если Вы имеете какой-либо контроль над тем, как изображение хранится, необходимо сохранить его в формате, который ищет экран. Вот некоторый пример кода:
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
GraphicsConfiguration config = device.getDefaultConfiguration();
BufferedImage buffy = config.createCompatibleImage(width, height, Transparency.TRANSLUCENT);
Graphics g = buffy.getGraphics();
, Если Вы собираетесь нарисовать изображение много раз, это может стоить преобразовать в совместимый формат, даже если это прибыло в некоторый другой формат.
Рисунок изображение также будет медленнее при преобразовании его, как Вы тянете, который часть 'изменения размеров' Вашего описания заставляет меня думать, что Вы могли бы быть. Снова, сделайте изменение размеры однажды (когда окно изменено), и кэшируйте измененное и совместимое изображение так, чтобы оно могло быть перерисовано быстро.
Как Вы судите питание компьютеров? 50x25 K 32-разрядное изображение берет больше чем 4,5 ГБ RAM для содержания в памяти (50000 * 25000 * 4 байта). Если один компьютер имеет больше RAM, чем другой, который может иметь огромное значение в скорости, потому что это не должно будет подкачивать к диску как часто. Необходимо рассмотреть подразделы захвата изображения и работы с теми вместо всего этого.
Редактирование: Вы использующий последний Java & графические драйверы? Если Ваше изображение только 5Kx2.5K, единственная вещь, о которой я могу думать, состоит в том, что оно делает его без любого аппаратного ускорения.
Существует несколько вещей, которые могли влиять на производительность здесь:
РЕДАКТИРОВАНИЕ: Взглянув на отредактированный вопрос, я предложил бы проверить, имеет ли 9600GS система новейшие установленные драйверы NVIDIA. Я недавно установил драйвер для Intel встроенная видеокарта, которая заменила универсальный драйвер Windows и сделала движущиеся окна, смотря видео, просмотрев и т.д. намного быстрее.
Все другие спецификации выглядят хорошими. Возможно, Java не обнаруживает 9600GS и не использует аппаратное ускорение, но я сомневаюсь относительно этого.
Также проверяют конфигурацию ОС. В Windows можно выключить аппаратное ускорение для отладки целей.
, Конечно, лучший способ обработать это должно было бы измениться, Ваш код - изменяют размеры изображения или разделяют его на блоки как предложенный DNS. Вы никогда не будете в состоянии видеть целое изображение, как это находится на экране.
Проверьте экранные настройки. Моя ставка - то, что пиксельная глубина отличается в этих двух системах, и что медленному связали нечетную пиксельную глубину с объектом изображения, который Вы пытаетесь отобразить.
Так как Java использует OpenGL, чтобы сделать 2D рисунок , производительность Вашего приложения будет затронута производительностью OpenGL графического процессора в соответствующем компьютере. Поддержка OpenGL истощается в 3D промышленности, что означает, что (иронически) более новые микросхемы могут быть медленнее при рендеринге OpenGL, чем более старые - не только из-за аппаратных средств, но также и драйверов.