Java производительность в реальном времени

Если для вашего MachineKey установлено значение AutoGenerate, то ваши токены проверки и т. Д. Не сохранятся после перезапуска приложения - ASP.NET сгенерирует новый ключ при запуске, а затем не будет способен правильно расшифровывать токены.

Если вы часто это видите, я бы предложил:

  1. Настройка статического MachineKey (вы должны быть в состоянии сделать это на уровне приложения), см. «Как : Настройка MachineKey " для получения дополнительной информации
  2. Старайтесь не выполнять сброс IIS при использовании сайта 1 sup>

1 sup> Лучший способ сделать это - использовать приложение с балансировкой нагрузки, которое потребует от вас установить статический MachineKey. Другой вариант - отключить сайт, поместив файл с именем app_offline.htm в корень сайта, который переведет сайт в автономный режим и отобразит ваше сообщение - по крайней мере, пользователи будут ожидать, что что-то пойдет не так.

12
задан Eddie 21 May 2009 в 23:50
поделиться

8 ответов

Я работал над компьютерным зрением с помощью Java, и я могу получить отрицательные голоса за это, но он идеально подходит для компьютерного зрения и прочего, вам просто нужно знать, как его использовать .

Возможные оптимизации:

Если вам нужна помощь в оптимизации вашего кода, я буду рад помочь - например, я могу сказать вам, что вы, вероятно, получите повышение производительности, создав метод

`public static final int getGrayScale(final int pixelRGB){
    return (0.212671f * ((pixelRGB >> 16) & 0xff) + 0.715160f * ((pixelRGB >> 8) & 0xff) + 0.072169f * ((pixelRGB) & 0xff));
}`

и используя это в вашем цикле for {пикселей}. Используя вызов метода, JVM может значительно оптимизировать эту операцию и, вероятно, также может оптимизировать цикл for.

Если у вас есть оперативная память для записи, вы можете создать статическую окончательную таблицу поиска выходных оттенков серого. байты для всех возможных цветов 24-битных пикселей. Это будет ~ 16 МБ ОЗУ, но тогда вам не придется выполнять арифметические операции с плавающей запятой, только доступ к одному массиву. Этот может быть быстрее, в зависимости от того, какую JVM вы используете, и может ли он оптимизировать проверку границ массива.

Места, где можно найти аналогичный, более быстрый код обработки изображений:

Я бы настоятельно рекомендовал Предлагаем вам взглянуть на код приложения для обработки изображений ImageJ (невозможно связать из-за задержки StackOverflow) и его библиотеки, в частности ij.process.TypeConverter. Как и ваш код, он в значительной степени полагается на прямые операции с массивами с битовой перестановкой и минимум создания дополнительных массивов . Библиотеки Java2D (часть стандартной JRE) и библиотека Java Advanced Imaging (JAI) (могут ' t ссылка благодаря задержке StackOverflow) предоставляют другие способы быстрой обработки изображений непосредственно на данных изображения без необходимости каждый раз свертывать собственную операцию. Для Java2D вам просто нужно быть осторожным, какие функции вы используете.

Почему библиотеки Java2D настолько непрямые:

Большая часть «классовой принадлежности» связана с поддержкой нескольких цветовых моделей и форматов хранения (изображения IE HSB , цветовые модели с плавающей запятой, индексированные цветовые модели). Косвенное обращение существует по какой-то причине и иногда фактически увеличивает производительность - класс BufferedImage (например) подключается непосредственно к графической памяти в последних виртуальных машинах, чтобы сделать некоторые операции НАМНОГО быстрее. Косвенность позволяет скрывать это от пользователя в большинстве случаев.

Почему библиотеки Java2D настолько непрямые:

Большая часть «классовой принадлежности» связана с поддержкой нескольких цветовых моделей и форматов хранения (изображения IE HSB, цветовые модели с плавающей запятой, индексированные цветовые модели). Косвенное обращение существует по какой-то причине и иногда фактически увеличивает производительность - класс BufferedImage (например) подключается непосредственно к графической памяти в последних виртуальных машинах, чтобы сделать некоторые операции НАМНОГО быстрее. Косвенность позволяет скрывать это от пользователя в большинстве случаев.

Почему библиотеки Java2D настолько непрямые:

Большая часть «классовой принадлежности» связана с поддержкой нескольких цветовых моделей и форматов хранения (изображения IE HSB, цветовые модели с плавающей запятой, индексированные цветовые модели). Косвенное обращение существует по какой-то причине и иногда фактически увеличивает производительность - класс BufferedImage (например) подключается непосредственно к графической памяти в последних виртуальных машинах, чтобы сделать некоторые операции НАМНОГО быстрее. Косвенность позволяет скрывать это от пользователя в большинстве случаев.

а иногда даже повышает производительность - например, класс BufferedImage подключается непосредственно к графической памяти в последних виртуальных машинах, чтобы сделать некоторые операции НАМНОГО быстрее. Косвенность позволяет скрывать это от пользователя в большинстве случаев.

а иногда даже повышает производительность - например, класс BufferedImage подключается непосредственно к графической памяти в последних виртуальных машинах, чтобы сделать некоторые операции НАМНОГО быстрее. Косвенность позволяет скрывать это от пользователя в большинстве случаев.

15
ответ дан 2 December 2019 в 05:55
поделиться

Я предлагаю это в зависимости от того, насколько важны манипуляции с изображениями по сравнению с проектом в целом, и по сравнению с теми преимуществами, которые дает Java. Ясно, что вы можете написать быстрый код на java (как вы продемонстрировали), если вам нужно. Однако, если 80% вашего проекта будет состоять из такой оптимизации, я бы определенно переосмыслил Java как выбор языка.

С другой стороны, если это составляет 20% приложения, а остальные 80% составляют функциональность пользователя для обеспечения этого преобразования, тогда, возможно, необходимость выполнить работу по выполнению манипуляций - это стоящий компромисс, чтобы не иметь дело с вашим собственным управлением памятью и иметь любые другие API-интерфейсы, которые Java предоставляет вам для взаимодействия с пользователем (Web, Swing, SWT, все, что вы

Java не известна своими способностями в реальном времени из-за сборщика мусора. Это может вас укусить, так что будьте осторожны.

Вы пробовали Sun JDK?
  • Если оптимизация производительности, которую вам нужно сделать несколькими методами, возможно, стоит переписать их и придерживаться Java ...
  • 6
    ответ дан 2 December 2019 в 05:55
    поделиться

    Я не знаю, какой прирост производительности вы получите, но если у вас есть длительный процесс, выполняющий повторяющиеся действия, вам следует попробовать запустить виртуальную машину Hotspot сервера, используя java -сервер . Он работает намного лучше , чем клиентская виртуальная машина, которая используется по умолчанию в Windows и оптимизирована для быстрого запуска.

    1
    ответ дан 2 December 2019 в 05:55
    поделиться

    Преждевременная оптимизация - корень всех зол.

    Вместо того, чтобы жаловаться, напишите оптимизированный набор библиотеки и выпустить их, но было бы неправильно создавать «эталонную» реализацию java, которая была предварительно оптимизирована для какой-то несуществующей цели.

    Основная цель эталонной реализации - сделать понятный, поддерживаемый код - должно быть. Я думаю, что всегда ожидалось, что в случае необходимости поставщики проанализируют эту понятную версию и переделают детали для повышения скорости.

    0
    ответ дан 2 December 2019 в 05:55
    поделиться

    В дополнение к тому, что сказали другие, вы можете внести свой вклад в оптимизацию JDK. Если вы можете обеспечить мощную оптимизацию, которая не жертвует общностью или удобочитаемостью, я надеюсь, вы сможете включить свой патч в будущий выпуск JDK.

    Таким образом, вам не нужно надеяться JDK может стать лучше. Вы можете помочь в этом.

    0
    ответ дан 2 December 2019 в 05:55
    поделиться

    Насколько я понимаю, самые последние версии Java (или, может быть, это был JavaFX) имеют методы, которые позволяют вам получить доступ к расширенным функциям видеооборудования вашей системы. Мне очень жаль, что я такой общий, я думаю, что слышал об этом на Java Posse, и, поскольку я застрял на земле Java 1.3, у меня никогда не было возможности проверить это, но я помню, что слышал что-то подобное.

    Вот кое-что об этом: Но похоже, что это будет только в Java 7: (

    Также похоже, что сначала он будет поддерживать только воспроизведение потока и элементарные манипуляции с потоком - но, возможно, "Подождите вокруг и Java улучшится "подход может действительно сработать.

    0
    ответ дан 2 December 2019 в 05:55
    поделиться

    Что мешает вам написать оптимизированную версию методов, которые вы хотите использовать, вместо использования встроенных методов? Если это невозможно, почему бы не написать свои объекты на более родном языке и не импортировать его в существующее приложение?

    0
    ответ дан 2 December 2019 в 05:55
    поделиться

    Мое предложение будет зависеть от того, насколько важна обработка изображений по сравнению с проектом в целом , и относительно преимуществ, которые дает Java. Ясно, что вы можете написать быстрый код на java (как вы продемонстрировали), если вам нужно. Однако, если 80% вашего проекта будет состоять из такой оптимизации, я бы определенно переосмыслил Java как выбор языка здесь.

    С другой стороны, если это составляет 20% приложения, остальные 80% - это функциональность пользователя, обеспечивающая это преобразование, тогда, возможно, необходимость выполнить работу по выполнению манипуляции - это стоящий компромисс, чтобы не иметь дело с собственным управлением памятью и иметь любые другие API-интерфейсы java. предоставляя вам возможность взаимодействия с пользователем (Web, Swing, SWT, все, что вы используете).

    Java не известна своими возможностями реального времени из-за сборщика мусора. Это может вас укусить, так что будьте осторожны.

    Java не известна своими возможностями реального времени из-за сборщика мусора. Это может вас укусить, так что будьте осторожны.

    Java не известна своими возможностями реального времени из-за сборщика мусора. Это может вас укусить, так что будьте осторожны.

    3
    ответ дан 2 December 2019 в 05:55
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: