Производительность наверху для В спящем режиме и Spring из-за отражения

Лично я не знаю, есть ли инструмент, который скажет «Удалить этот файл». Это действительно сложный вопрос, который зависит от многих вещей. Глядя на дерево включенных утверждений, вы наверняка сведете вас с ума ... Это сведет меня с ума и испортит мне глаза. Существуют более эффективные способы сократить время компиляции.

  1. Отключите ваши методы класса.
  2. После удаления их, повторно изучите включенные операторы и попытайтесь удалить их. Обычно полезно удалить их и начать заново.
  3. Предпочитаю использовать предварительные декларации в максимально возможной степени. Если вы деинлайн-методы в заголовочных файлах, вы можете сделать это много.
  4. Разбейте большие заголовочные файлы на более мелкие. Если класс в файле используется чаще, чем большинство, поместите его в заголовочный файл сам по себе.
  5. 1000 переводных единиц не очень много на самом деле. У нас между 10-20 тысячами. :)
  6. Получите Incredibuild, если время компиляции все еще слишком велико.
5
задан victor hugo 30 June 2009 в 00:45
поделиться

5 ответов

Несмотря на снижение производительности, оно относительно невелико и может считаться незначительным. Ключевой вопрос здесь заключается в том, что выгода, которую вы получаете от использования ORM (с отражением), намного перевешивает очень небольшое снижение производительности, которое вы платите.

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

10
ответ дан 18 December 2019 в 05:23
поделиться

Да, вероятно, да. Hibernate довольно сильно оптимизирован различными хитрыми способами, но он все равно будет медленнее, чем доступ к низкоуровневым данным с правильно подготовленным оператором, если предполагается, что кеш вам не поможет.

Но это не тот вопрос, который вам нужно задавать в любом случае.

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

Как всегда, если у вас есть проблемы, протестируйте и профилируйте реалистичный сценарий.

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

You can only find out if you're measuring for your specific workload.

Assume that for retrieving + hydrating 100 entities Spring+Hibernate will add an overhead of 3 milliseconds.

If your unit of work usually takes 120 milliseconds, then there is a very small overhead. If it take 5 milliseconds, then it's serious.

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

Шансы на то, что накладные расходы на отражение будут значительными, мала в любом разумном приложении. (всегда есть необоснованные приложения :)

Для сравнения; запустите свое приложение через профиль и посмотрите, сколько памяти / ЦП потребляет драйвер JDBC.

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

ОБНОВЛЕНИЕ: Я думаю, что я и мистер Скит пытаемся подчеркнуть, что снижение производительности при использовании отражения в этих фреймворках незначительно. Это в сочетании с тем фактом, что рефлексия является жизненно важной частью реализации этих структур, означает, что выбор невелик.

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

Я бы порекомендовал этот вопрос :

Теперь проблема состоит в том, чтобы проверить все, что изменилось.
Это проблематично, поскольку часто не все меняется, и ClearCase вызывает сообщение об ошибке при попытке проверить идентичный файл. Это означает, что вам потребуются 2 команды:

ct lsco -r -cvi -fmt "ci -nc \"%n\"\n" | ct
ct lsco -r -cvi -fmt "unco -rm %n\n" | ct

(где 'ct является' cleartool ': введите' doskey ct = cleartool $ * 'в Windows, чтобы установить этот псевдоним)


Но если под «checkin» вы имеете в виду:

  • «впервые войти в систему управления версиями»
  • «обновить большое количество файлов, которые могли быть изменены в существующем каталоге с поддержкой версий»

Я бы рекомендовал создать динамическое представление и очистить fsimport вашего дерева снимков (с новыми файлами ) в динамическом представлении.

См. этот вопрос или этот вопрос .

сценарий clearfsimport лучше приспособлен для многократного импорта одного и того же набора файлов и автоматически:

  • добавить новые файлы, Hibernate, оптимизировано "отражение" через байт-код времени выполнения CGLIB библиотека поколений. Это означает, что "отраженные" вызовы получения / установки свойства больше не нести накладные расходы API отражения Java и на самом деле просто обычные вызовы методов. Это результаты при (очень) небольшом приросте производительности.

10
ответ дан 18 December 2019 в 05:23
поделиться
Другие вопросы по тегам:

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