Я думаю, что Вашим решением был бы стандартный путь, но - поскольку Вы отметили себя - это - вероятно, не самый быстрый возможный путь.
можно посмотреть Находка GNU . Это - библиотека, которая содержит все виды быстрых примитивных Наборов. Ваш пример использовал бы TObjectIntHashMap, который имеет метод adjustOrPutValue, который делает точно, что Вы хотите.
В общем, чем реже вы обращаетесь к базе данных, тем лучше. Для этого есть ряд причин, в том числе:
В общем, все, что выполняется в памяти (цикл for), выполняется быстрее, чем то же самое, выполняемое по сети (вызов базы данных). Однако:
for i = 1 to num_users
get user from database
end
будет медленнее, чем
get users 1 to num_users from database (in one query)
, потому что это число раз, когда вы запрашиваете у базы данных что-то действительно важное.
Если вы собираетесь обрабатывать каждый элемент, просто сделайте один вызов, если он не будет использовать возмутительное количество объем памяти.
Я не видел плагинов, которые бы это делали, но мне это кажется разумным сокращением.
Следующее могло формируют основу плагина для создания класса непосредственно из выбранного интерфейса. Он работает с моим ящиком (TM).
В настоящее время предполагается, что класс примет имя интерфейса с суффиксом «Impl» и не работает (записывая причину), если этот тип уже существует.
Некоторые улучшения, о которых я могу подумать:
Плагин добавляет команду к контекстное меню для редакторов, представлений и выделения текста, отключение элемента, если выделение не соответствует интерфейсу. Вызов базы данных обычно включает передачу данных по локальной сети или, что еще хуже, через Интернет. запрос должен анализироваться каждый раз и т. д.
Но если у вас есть тысячи или миллионы элементов, которые просматриваются в одном запросе к базе данных, то запрос sql будет намного быстрее, поскольку системы баз данных оптимизированы для обработки огромных объемы данных. Но не забывайте создавать индексы для своих таблиц.
В случае сомнений, вы должны измерить время, необходимое для каждого метода, и если это просто дает вам лучшее представление о том, как ведет себя производительность.
Попробую: вызовы DB, скорее всего, будут дороже. По крайней мере, это то, что я испытал до сих пор ...
Я думаю, это зависит от того, что вы делаете. В вашем заявлении недостаточно информации.
Приведенные выше ответы верны, чем меньше вы обращаетесь к базе данных, тем лучше (обычно). Поэтому вам следует попытаться выполнить определенную операцию за как можно меньше вызовов базы данных. Единственное исключение из этого, я думаю, будет в тех случаях, когда ваше приложение быстрее, чем база данных, возможно, при выполнении сложных преобразований данных или при использовании очень неэффективной базы данных.
Обычно, позволяя базе данных выполнять преобразование данных в форма set обычно выполняется быстрее, чем выполнение их программно с использованием курсора в цикле for. Если это не то, что вам знакомо, я предлагаю выучить немного больше SQL или получить хорошую книгу с практическими рекомендациями, например SQL Cookbook (примечание: я не связан с O'Reilly,
В целом, чем меньше вы обращаетесь к базе данных, тем лучше.