Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выбор структуры для хранения данных


Страницы:   1 2 3

LDV ©   (2010-10-15 10:39:00) 

В программе анализируются файлы. По каждому из файлов нужно ВРЕМЕННО хранить данные (FileName, Ver, Size, CRC). Какую структуру грамотнее всего использовать для хранения этих данных?

1. TStringList.AddObject(FileName, TMyObject.Create(Ver, Size, CRC);
2. Наследник TList.Add(FileName, Ver, Size, CRC);
3. XML
4. другие варианы


Медвежонок Пятачок   (2010-10-15 15:51:00) [1]

речь шла об обработке файлов.
ты же ограничился построением списка и все.
теперь сравни что есть у тебя после скана и что есть у меня после такого же скана.

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


DVM   (2010-10-15 15:42:00) [2]


> Медвежонок Пятачок ©   (15.10.10 15:25) [43]

Ну о дереве же не шла речь. Если сравнивать с деревьями, то думаю в Delphi Fundamentals найдется другой класс.


Медвежонок Пятачок   (2010-10-15 15:25:00) [3]

http://narod.ru/disk/26134644000/XML.rar.html


DVM   (2010-10-15 15:24:00) [4]


> Время обращения: 684863

Впечатляет.


RWolf   (2010-10-15 15:02:00) [5]


> Anatoly Podgoretsky ©   (15.10.10 14:41) [39]
> как не принявших участие.


никто не поинтересовался же.
а так — никаких проблем;
вот код DVM, переделанный под хеш-таблицу: http://rghost.ru/2927344
требует библиотеку Delphi Fundamentals.

результат миллиона случайных выборок по именифайла:
Всего файлов: 20720
Время обращения: 684863


oldman   (2010-10-15 14:44:00) [6]

Удалено модератором


Anatoly Podgoretsky   (2010-10-15 14:41:00) [7]


> QAZ   (15.10.10 13:33) [37]

А остальных вообще снимаем с соревнования, как не принявших участие. И давай его не будем считать проспорившим, просто занявшим последнее место из одного.


И. Павел   (2010-10-15 14:03:00) [8]

> пока не выложен переделаный на хмл код dvm - щитаем пятачка
> проспорившим

Ага. А слон (см. [12]) - на почетном третьем месте :)


QAZ   (2010-10-15 13:33:00) [9]

Удалено модератором


Медвежонок Пятачок   (2010-10-15 13:29:00) [10]

Может ему визуализировать список в TListView в виртуальном режиме надо потом, тут явно XML не к месту окажется.


ну это еще неизвестно к месту или нет. и к месту ли листвью сам по себе (а что он собственно может показать, чего не может показать ie?)
самая простая визуализация - вызываем save и даблклик и смотрим в ie

другая визуализация: рисуем xsl (один или много всяких разных)
вызываем transformnode и получаем либо html, либо plaintext либо rtf
c цветочками и бантиками.
сама программа причем не меняется.


DVM   (2010-10-15 13:20:00) [11]


> Медвежонок Пятачок ©   (15.10.10 13:10) [30]

пытаешься притянуть задачу к тем удобствам которые предоставляет XML ? :)

Я запрограммирую и это, и уверен, что моя реализация будет работать быстрее, чем средства XML, но времени я затрачу конечно больше. Но речь о конкретной задаче автора вопроса, может ему это и не надо, а может и надо.
Т.е нельзя сказать, подойдет ли тут однозначно XML или нет.
Может ему визуализировать список в TListView в виртуальном режиме надо потом, тут явно XML не к месту окажется.


Медвежонок Пятачок   (2010-10-15 13:17:00) [12]

Если чисто конкретный (опять же насчет критериев поиска не договорились, индекс, имя файла?), то и моя реализация может быть другой, например как в [28].


Я ищу не случайный файл. Это не интересно.
Случайный - он самый первый и все. меньше микросекунды.
Я ищу чисто конкретный файл по какому-то атрибуту (по размеру или по имени например)
Причем искомый узел - он у меня заведомо самый последний в документе.

На поиск ушло 78 тиков.

сколько времени ушло на создание?
Ну всяко на порядки меньше чем само сканирование диска.
Само сканирование я делал, ибо считаем, что оно у нас одинаковое.


DVM   (2010-10-15 13:13:00) [13]


> sniknik ©   (15.10.10 13:10) [31]


> вообще такой код выкидывается оптимизатором... т.к. переменная
> не используется.

Я вот тоже засомневался на этот счет.


DVM   (2010-10-15 13:12:00) [14]


> Медвежонок Пятачок ©   (15.10.10 13:06) [29]


> ищу не случайный, а чисто конкретный, нужный мне узел.

Если чисто конкретный (опять же насчет критериев поиска не договорились, индекс, имя файла?), то и моя реализация может быть другой, например как в [28].


> создан xml c 56179 узлами

сколько времени ушло на создание? хорошо бы все таки объединить с моим кодом чтоб сравнить.


> Разница геттиккаунтов до и после поиска = 78 мс

т.е 78000 по моим единицам измерения.
Ты один раз ищешь или много раз?


sniknik   (2010-10-15 13:10:00) [15]

DVM ©
вообще такой код выкидывается оптимизатором... т.к. переменная не используется.
 for i := 0 to 999999 do
   begin
      n := Round(Random(MaxCount));
      FileInfo := FileList.Files[n];
      //
   end;

поставь вместо комментария что то с этой переменной, например
 if FileInfo.FileSize = -1 then begin
    btnScan.Caption:= '';
    break;
  end;

будет более реальный результат

> меряца надо на одном компе и кагда будет ответный вариант
а код дан для чего? напишет свой, сравнит работу с этим на том же компе...
какой то не правильный Кэп, не видит очевидного...


Медвежонок Пятачок   (2010-10-15 13:10:00) [16]

а теперь попробуй найти все файлы с именем N имеющие размер > M, которые лежат в каталогах X, но не во всех, а только в тех X, у которых родительский каталог находится в внутри папки Y, которая имеет не менее десяти файлов.


Медвежонок Пятачок   (2010-10-15 13:06:00) [17]

вот что вышло у меня (результаты в микросекундах), после заполнения списка происходит 1000 000 случайных обращений к его элементам.


а вот что у меня:
создан xml c 56179 узлами
у каждого узла атрибуты name,size
size равен порядковому номеру узла.
последний узел имеет последнее значение переменной цикла (56179)

ищу не случайный, а чисто конкретный, нужныймне узел.
Причем он не в начале документа, а в конце

Разница геттиккаунтов до и после поиска = 78 мс


RWolf   (2010-10-15 13:00:00) [18]


> Какую структуру грамотнее всего использовать для хранения
> этих данных?

Смотря как будет происходить доступ к элементам этого контейнера.
Если по имени файла, то напрашивается хэш-таблица.


DVM   (2010-10-15 12:35:00) [19]

Удалено модератором


QAZ   (2010-10-15 12:30:00) [20]

Удалено модератором


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо