Может передать объект методу повышения производительности по отправке отдельных параметров
Мне назначена задача оптимизации производительности приложения.
Часто необходимо передать 16-25 параметров конструктору и установить их там.
Я хочу создать для этого класс и объект и установить эти значения для объекта, а затем передать.
Будет хорошо читать. Но будет ли это полезно для моей задачи (т.е. Оптимизации производительности)?
Ответы
Ответ 1
Это может немного улучшить производительность, но основным преимуществом будет повышение удобочитаемости вашего кода. Конструктор с 16-25 параметрами не читается и очень сложно использовать.
Конечно, вы должны вводить только новые классы, которые имеют смысл (т.е. параметры связаны друг с другом). Нет смысла толкать 15-26 несвязанных параметров в один класс только ради передачи их в конструктор.
Ответ 2
Различия в производительности, вытекающие из этого, если таковые имеются, вряд ли будут заметны.
Если ваша задача заключается в решении проблем с производительностью, то ваша первая задача - найти, где проблемы. Вы делаете это путем профилирования приложения. Вы сделали это и продемонстрировали ли это, что проблема в передаваемом параметре?
Ответ 3
В современном программном обеспечении было бы довольно необычно иметь 25 свободных переменных для вызывающей функции, а затем передать их явно методу или ctor.
Чаще всего, в OO-дизайне эти переменные вместо этого были бы упакованы в класс (или несколько классов), сгруппированные по их логическим обязанностям.
И поскольку Java
передает объекты по ссылке, передача одной ссылки объекта в стеке может иметь некоторое преимущество в производительности (меньшее количество переменных нужно вставить в стек). Однако реальная выгода - это считывание и обслуживание кода.
Следует, однако, отметить, что для этого потребуется, чтобы класс передаваемого объекта был разделен между потребителем и службой - это может быть проблемой, в зависимости от того, что моделирует класс переноса (например, это объект передачи данных, бизнес-объект, модель просмотра, объект сериализации XML/JSON и т.д.?). Если тип совместного доступа между вызывающим и вызываемым будет нарушать вашу архитектуру, тогда вы, как правило, сопоставляете 25 переменных в другой подходящий канонический класс (или классы, снова наблюдая проблемы реорганизации SRP) и вместо этого передавайте это (эти). На данный момент выгоды от производительности не будут достигнуты, но пособие по удобочитаемости/ремонтопригодности будет сохранено.
Ответ 4
Как можно предложить совместное использование нескольких свойств в единое целое, называемое классом, которое представлено объектом, что улучшит производительность и готовность кода