![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выбор структуры для хранения данных
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]Удалено модератором