Использую в проекте Spring и Hibernate, разные ServiceDAO, осуществляющие доступ к данным, имеют уже порядка 30 методов, мне стало интересно, стоит ли их разбивать ради повышения производительности, или кол-во методов в классе не влияет на его скорость загрузки?
Не влияет.
На скорость влияет код в методах, а не количество их в классе, т.к. код выполняется многократно, а классы загружаются один раз. Скорость загрузки байт-кода так высока что какие бы то ни было различия будут неощутимы. Выигрыша, даже незначительного, не будет в любом случае т.к. вместо одного класса с 30-ю методами будет загружено три по 10 в каждом.
Более общая мысль: если решили всерьез заняться оптимизацией, то первым делом нужно измерить скорость выполнения кода, найти самые медленные места и сосредоточиться на них. Навряд ли самой медленной частью будет работа загрузчика классов.
Вызовы методов, загрузка классов, JIT-компиляция, как правило, работают быстро. Запрос к БД либо обращение к сервисам займут в тысячи раз больше времени. Запуск сборщика мусора и загрузка сущности из кэша работают в сотни раз медленнее. Экономить на наносекундах можно, но в этом мало смысла когда секунды тратятся впустую.
стоит ли их разбивать ради повышения производительности
Не стоит. Разбивать классы стоит для организация логики и повышения удобочитаемости.
P.S. «Преждевременная оптимизация — корень всех зол.» Дональд Кнут
"Разбивать классы" следует в соответствии с архитектурными принципами, а не руководствуясь скоростью их загрузки. Если у вас 30 методов в одно классе, то вы явно нарушаете принцип единственной ответственности, как минимум.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Сталкиваюсь с такой проблемойВременами когда я гружу проекты с war файла в Eclipse, Packages не открываются в "Название проекта/Java Resources/src" С чем это...
В Java литералы применяются для представления постоянных значений в форме, удобной для восприятияНапример, число 100 является литералом
Собираю проект с помощью GradleПри этом из resources в jar входит только META-INF