|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.07.2017, 20:04 | #1 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Ленивые структуры данных
У меня есть классы, которые должны хранить список сотрудников. Этот список берется из базы, которую не надо нагружать лишний раз. Поэтому списки сотрудников должны заполняться только когда они действительно нужны.
Я пытаюсь реализовать ленивость как в хаскеле. Для этого я написал такую обертку над QList: Код:
Код:
|
20.07.2017, 00:20 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
А если надо искать по имени а не по супериору, тогда пишем новый класс?
Я уж молчу, что пока что у вас только одно ID, а вот если полей станет больше все query.value(7) будут сбивать с толку - поди вспомни, что содержиться в восьмой колонке... |
20.07.2017, 09:56 | #3 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Взрослые ORM наоборот пытаются пачкой данные грузить, а не на каждый чих грузить данные из базы. При получении списка id, СУБД легко и просто вытащить все данные, а так фигня получится если отдельно грузить id, а потом для каждого id отдельно запись подтягивать.
Пилите темплейтовый класс LazyList, чтобы работал не только для Employee и не только для int id. Всё равно будет бесполезная вещь, но опыта наберётесь с шаблонами |
20.07.2017, 10:54 | #4 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Согласен с этим. Но ведь ленивые списки, на мой взгляд, не делают хуже, к тому же заполнение такого списка можно сделать в транзакции, чтобы БД не открывалась перед получением очередной записи.
|
20.07.2017, 11:05 | #5 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
1. транзакции лучше: открыл и закрыл, а не держать висящими пока кто-то по списку гуляет туда-сюда.
2. пока будете лениво шагать по списку, он может быть в другом состоянии. элемент с этим id уже удалили или добавили новый,... получится ленивый список с "грязными" данными. 3. это изобретение велосипеда и в мир код этот не пойдёт. Хочется прикрутить к нему свистелок - универсализируйте через шаблоны или еще как и работайте над потокобезопасностью. Получите полезные навыки и знания. ИМХО, полностью ленивый список, когда элементы подхватываются по ID-родителя или еще по какому критерию - это ОК. Ленивый список, когда элементы подхватываются по итератору или еще как - лишний головняк с кучей подводных камней, который только ухудшит производительность и усложнит код. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Структуры данных Си | Александр Волков | Общие вопросы C/C++ | 3 | 25.05.2017 15:21 |
Структуры данных на С. | art1es23 | Общие вопросы C/C++ | 3 | 05.11.2015 14:42 |
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) | _4Alex4_ | Помощь студентам | 1 | 14.11.2012 07:39 |
Структуры данных | Gapro | Общие вопросы C/C++ | 11 | 23.10.2011 09:02 |
С++ Структуры данных | DarkSwan | Помощь студентам | 0 | 27.10.2010 12:21 |