![]() |
| ||
|
|
Новости |
Поиск |
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. другие варианы
QAZ (2010-10-15 12:22:00) [21]Удалено модератором
DVM (2010-10-15 12:21:00) [22]вот что вышло у меня (результаты в микросекундах), после заполнения списка происходит 1000 000 случайных обращений к его элементам.
Время сканирования: 7426958
Всего файлов: 56179
Время обращения: 31701
Время сканирования: 7383852
Всего файлов: 56178
Время обращения: 33705
Время сканирования: 7050182
Всего файлов: 56178
Время обращения: 31768
sniknik (2010-10-15 12:20:00) [23]> Ну типа не фиг тут панацею пропагандировать, а там глядишь, и бодаться не придеться.
+1
sniknik (2010-10-15 12:19:00) [24]> а вот если бы было написано "хранить структуру каталогов"
интереснее было бы если бы объединить т.е. "структуру каталогов с данными по файлам"...
вот тут неоднозначно, т.к. у меня например есть каталоги(логи) где по 20 тыс файлов за день... т.е. собрать все вместе в xml и он не выдержит (500 мг, уже с трудом, а гиг стандартный DOM документ уже не держит).
скорее всего бы разбил на 2, структуру в xml, а данные по файлам все таки в рекордсет, только добавил бы поле "хеш пути" по которому определял бы положение файда в каталоге.
а вот если бы нужно было хранить в базе, то преобразовал бы каталог в "дерево".
в общем все от задачи и данных зависит, а не от "крутизны технологии". может ему по задаче и стринглиста "за глаза"...
DVM (2010-10-15 12:19:00) [25]
> Медвежонок Пятачок © (15.10.10 11:25) [15]
http://narod.ru/disk/26127027000/XMLvsList.zip.html
Palladin (2010-10-15 12:12:00) [26]
> Ну типа я голосуя за 3 не предполагал, что эта пятница уйдет
> на бодание со всеми вами в одиночку
Ну типа не фиг тут панацею пропагандировать, а там глядишь, и бодаться не придеться.
Медвежонок Пятачок (2010-10-15 12:11:00) [27]ну если зависит от данных, а данные у нас по своей природе "деревянные", то xml здесь будет наиболее органично моделировать предметы реального мира (файлы)
sniknik (2010-10-15 11:59:00) [28]а чего бодаться? зависит от данных...
написано - хранить данные (FileName, Ver, Size, CRC)
т.е. строка на каждую запись, табличная структура, значит однозначно что-то типа таблицы в памяти, xml тут будет "перебор".
а вот если бы было написано "хранить структуру каталогов", т.е. данные неопределенной вложенности\структуры то я сам бы выбрал xml (ну или json, смотря на чем и для чего делал бы...)
Медвежонок Пятачок (2010-10-15 11:49:00) [29]Ну типа я голосуя за 3 не предполагал, что эта пятница уйдет на бодание со всеми вами в одиночку
sniknik (2010-10-15 11:41:00) [30]> Я когда писал ответ, подумал, ща придет медвежонок и его ответ будет однозначен :)
аналогично.
> TClientDataSet/TMemTable
TADODataset
Медвежонок Пятачок (2010-10-15 11:25:00) [31]Ок
DVM (2010-10-15 11:24:00) [32]
> Медвежонок Пятачок © (15.10.10 11:19) [13]
ну давай, я ща набросаю вариант с TList и выложу сюда, процедуры скана папки и т.д. одинаковые будут думаю, чтоб точнее сравнение было. А ты переделай на XML. Счетчик тоже сделаю.
Медвежонок Пятачок (2010-10-15 11:19:00) [33]не совсем понял, время на программирование что ли?
Ага
Плохиш (2010-10-15 11:16:00) [34]
> DVM © (15.10.10 11:08) [9]
> Медвежонок Пятачок © (15.10.10 11:12) [10]
Пацаны, у слона всё-равно длиннее.
DVM (2010-10-15 11:15:00) [35]
> только в сравнении давай еще учтем время на реализацию
> самой задачи.
не совсем понял, время на программирование что ли?
Медвежонок Пятачок (2010-10-15 11:12:00) [36]да легко.
только в сравнении давай еще учтем время на реализацию самой задачи.
DVM (2010-10-15 11:08:00) [37]
> Медвежонок Пятачок © (15.10.10 10:59) [8]
А давай может сравним, если есть время? Тебе, как евангелисту от XML, думаю тоже будет интересно.
Суть сравнения:
1) Добавляем в списки инфу о всех файлах и папках (в т.ч. и вложенных) папки Windows. Замеряем время.
2) Делаем выборку 1000 произвольных записей. Замеряем время.
Ну еще и потребности памяти можно замерить.
Сравнивать будем XML vs TList
Медвежонок Пятачок (2010-10-15 10:59:00) [38]а как там со скоростью?
Со скоростью там все очень быстро
Плохиш (2010-10-15 10:54:00) [39]
> По каждому из файлов нужно ВРЕМЕННОхранить данные (FileName,
> Ver, Size, CRC). Какую структуру грамотнее всего использовать
> для хранения этих данных?
TClientDataSet/TMemTable
DVM (2010-10-15 10:49:00) [40]
> Медвежонок Пятачок © (15.10.10 10:47) [4]
а как там со скоростью?