Ведение пула экземпляров класса DAO против выполнения нового оператора - PullRequest
0 голосов
/ 05 апреля 2010

мы уже некоторое время пытаемся сравнить производительность наших приложений несколькими способами. Я всегда считал, что создание объектов в Java с использованием Class.newInstance () не было медленным (по крайней мере, после версии 1.4 Java). Но мы все равно сделали тест на использование метода newInstance против mainitain для пула объектов из 1000 объектов. Мы сделали около 200K итераций загрузки данных из БД с использованием JDBC и заполнения этих объектов. Я был поражен (даже шокирован), увидев, что код newInstance по сравнению с кодом пула объектов был почти в 10 раз медленнее.

Эти объекты представляют таблицы с около 50 полями и типом строки.

Может кто-нибудь поделиться своими мыслями по этому вопросу, так как теперь я более запутан, если пул объектов хотя бы в некоторых экземплярах DAO является лучшим вариантом. Размер пула, как я вижу сейчас, должен быть достаточно большим, чтобы соответствовать размеру средних запросов. Есть и обратная сторона: мой объем памяти будет увеличиваться, но я начинаю задумываться, имеет ли смысл идея такого рода хотя бы для некоторых объектов DAO, представляющих таблицы из 50 или более столбцов

Пожалуйста, поделитесь своими идеями и дайте мне знать, если кто-то пытался это сделать или я что-то упустил здесь

Ответы [ 2 ]

0 голосов
/ 06 апреля 2010

Пул объектов DAO - плохая идея. Пул соединений с базой данных, это хорошая идея. У меня вопрос, что у тебя действительно есть? Если вы открываете соединение в каждом DAO без объединения в пул, вы видите лучшую производительность, потому что вы объединяете соединения, а не потому, что вы объединяете объекты DAO. Мой следующий вопрос: что вы делаете в конструкторе, который занимает так много времени? Если ваши конструкторы дороги для выполнения, тогда пул объектов может быть хорошей идеей. Хотя я бы действительно посмотрел на то, что ты делаешь из конструктора ...

0 голосов
/ 05 апреля 2010

Цитировать из Java-параллелизма на практике :

Просто скажите нет объектным пулам

Вероятно, существует более простой вариант решения любых проблем, с которыми вы столкнулись. Например, почему вы в первую очередь создаете множество экземпляров ваших DAO? Создается ли новый экземпляр DAO каждый раз, когда вам нужно извлечь данные из базы данных?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...