Как лучше управлять данными

Тема в разделе "WASM.HEAP", создана пользователем blacktelecom, 4 янв 2012.

  1. blacktelecom

    blacktelecom New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2010
    Сообщения:
    235
    Вот есть структура

    Server_Type{
    Id int,
    HTTP_Url string,
    Enabled int,
    Active int,
    HType int указывает на HTypes.id
    ...


    }


    пусть есть список таких структур, назовём его Server_List

    Мне надо выбрать все Server_Type из Server_List где Server_Type.Active=1;

    Как лучше: Держать в памяти 2 списка с active=0 и active=1 или таки бегать в цикле по одному?
     
  2. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Сортировка при создании?
     
  3. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    и индексация
     
  4. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    а смысл? по моему достаточно сортировать список при создании (соотвественно, при добавлении новых элементов вставлять в нужное место)
     
  5. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Не очень понятен контекст, в котором это должно выполняться, но, по-моему, самое простое -- держать два списка: в одном активные сервера, а в другом -- нет.
     
  6. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    rpy3uH, ну хотя бы хранить индекс первого элемента с active=0 (если с 1 вначале). Для быстрого доступа.
     
  7. rttgedt

    rttgedt Антон

    Публикаций:
    0
    Регистрация:
    12 окт 2010
    Сообщения:
    85
    Mika0x65, да, наверное.. хотя если сервер был неактивен, а потом стал активен, не создадут ли два списка лишней путаницы?
     
  8. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    rttgedt
    Не совсем понятно, какие у blacktelecom условия. Был неактивен, стал активен -- переносится в другой список. Возможно, потребуется какая-то синхронизация, если потоков много.
     
  9. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    386
    Если активных записей много, если всего записей мало - то не стоит париться.
    Если наоборот (записей много, из них активных мало) - то можно делать список активных. А лучше множество (set) указателей на элементы списка с Active == true

    Тогда смена признака активности выльется в модификацию одного булева поля и одной операции удаления или вставки в множество, которая выполняется быстро.

    Если подразумевается high concurrency - то имеет смысл потестить под нагрузкой обе реализации - не факт, что вторая будет быстрее.
     
  10. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    blacktelecom

    Какой язык-то хоть? :)
     
  11. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    более того, если всего записей мешьше 100, то не стоит париться вообще!
     
  12. blacktelecom

    blacktelecom New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2010
    Сообщения:
    235
    насчет двух реализаций - хорошо придумано, щас буду тестить, скажу результаты.
    Тут еще вопрос чуть не встал.

    HTypes is ( HT_AUTHSERV, HT_MEDIASERV, HT_APPSERV...)

    То есть мне нужно иногда выбирать все активные серверы где HType = HT_AUTH или HT_MEDIASERV

    Проблему решил, сделав HType числом, в котором просто устанавливаются или снимаются нужные байты.

    Всё же склоняюсь к двум спискам. У меня 40 мегов оперативы и нет HDD:)