Является ли повторное использование объекта Command and Connection в ado.net законным способом сокращения создания нового объекта? - PullRequest
1 голос
/ 14 мая 2010

Текущий способ написания нашего приложения включает создание нового объекта подключения и команды в каждом методе, который обращается к нашей базе данных sqlite. Учитывая, что нам нужно, чтобы он работал на устройстве WM5, это ведет к ужасной производительности.

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

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

1 Ответ

1 голос
/ 14 мая 2010

Хотя я не уверен насчет уменьшения количества объектов команд, уменьшение количества соединений, безусловно, является хорошим планом. Они спроектированы так, чтобы их установка была относительно дорогой (эй, они предполагают фактическое открытие файла на диске!), Поэтому очень разумно хранить их в течение относительно долгого времени. Так что сделайте первый этап вашего плана и проведите время, чтобы увидеть, достаточно ли это хорошо, или вам нужно больше оптимизировать работу ...

Обратите внимание, что вполне возможно, что создание объектов команды один раз для каждого соединения также будет экономией, поскольку это позволит их компилировать один раз и многократно использовать повторно. Не то, чтобы это имело значение, пока вы не сохраняете соединение в первую очередь!

...