![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оптимизация или что быстрее стринглист или проход по базе
IGORYOK © (2004-03-04 17:30:00)Передо мной предстала задача оптимизации. Я долго раздумывал над различными схемами, но вопрос упирался в тот простой момент что Дельфийские классы не являются столь уж скоростными, и наоборот тяжело захламляют память, вопрос в следующем - что быстрее проход Nextами по базе или загрузка в начале довольно солидного txt файла и поиск по нему(Хочу сказать что думаю о частичной загрузке списка). И ещё одно что быстрее идя по записи сразу брать из всех колонок или загружать по колонкам отдельно.
KA_ (2004-03-06 15:52:00) [1]>Вольный Стрелок (05.03.04 15:15) [14]
Ну зачем же так...
Все три приема имеют место быть и даже используются разработчиками. Просто не так часто, как стандартные :)
Вольный Стрелок (2004-03-05 15:15:00) [2]сорри за оффтоп, но сегодня, похоже, день извращенцев:
- один хочет БД в ЕХЕ хранить
- второй хочет закачивать на клиента текст и раком его использовать вместо нормальной работы с Dataset
- третий вообще хочет БД без СУБД и соответствующих компонентов сделать
куда катимся?
Stas (2004-03-05 11:23:00) [3]Однозначно будет работать быстрее определенный массив.
Но, для начала его нужно залить через ADO.
Если тебе его нужно гонять туда-сюда.
Только зачем тебе это ?
KA_ (2004-03-05 11:17:00) [4]>IGORYOK (04.03.04 17:30)
1.
Загрузка куда и для чего?
Если для поиска, то возможны всякие варианты - от использования SQL-запросов до внутренних средств СУБД, т.е. для поиска данных загружать их полностью необязательно (и часто очень вредно).
При использовании TADODataset скорость работы с данными весьма приличная (в среднем).
2.
>что быстрее проход Nextами по базе или загрузка в начале >довольно солидного txt файла и поиск по нему
Загрузка txt файла будет происходить быстрее. Но поиск по нему неудобен. TDataset предоставляет массу удобных инструментов для навигации и поиска, а TStringList - нет. Допустим такая ситуация: две записи в таблице имеют одинаковое значение в разных полях - и как в TStringList определить к какому полю относится строка? Можно конечно, но придется пробиваться через анальный сфинктер.
>что быстрее проход Nextами по базе
Это для поиска? Поиск можно и нужно осуществлять методом Locate!
>Никто (05.03.04 10:50) [9]
>1. ADO работает быстро.
А борландовская обертка над recordset'ом к сожалению не так быстро.
sniknik (2004-03-05 11:02:00) [5]IGORYOK (05.03.04 09:46) [7]
> Странно что Вы не поняли. База-Access доступ-через АДО тоесть JET.
до сих пор не понимаю (даже учетом дополнительного пояснения), что с чем сравнивается?
> В базе Access можно сделать макрос который создаст нужный txt
т.е. хочеш предварительно таблицу в текст перегнать а уже текстовый файл в стринглист закачать? вместо одного запроса, бред по моему.
мало того что лишние операции так еще и числовые данные в строки переконвертирует, и времени и памяти больше займет.
Никто (2004-03-05 10:52:00) [6]P.S. А зачем бегать по всем записям/столбцам? Может, переформулировать запрос?
Никто (2004-03-05 10:50:00) [7]1. ADO работает быстро.
2.repeat- быстрее, так как курсор при этом пробегает по БД один раз.
FieldByName()
FieldByName()
until
3. Выполнение макроса в Access + загрузка получившегося txt (не упоминая уж о создаваемом при этом временном файле) - явно дольше, чем работа напрямую с ADO.
4. Грубость - не лучший способ получить ответ.
Рамиль (2004-03-05 09:55:00) [8]А Вы где нибудь видели, что делается так?!.
IGORYOK (2004-03-05 09:46:00) [9]Странно что Вы не поняли. База-Access доступ-через АДО тоесть JET.
Zacho ответивший дважды скажу: Может быть я ошибаюсь но DataSet как я понимаю при каждом вызове Next и тд обращается к COM, не буду описывать всю ситуацию, но COM мне казалось не самое быстрое взаимодействие. А по поводу второго как вы не поймёте:
Делать так:
repeat
FieldByName()
until
repeat
FieldByName()
until
и тд или
repeat
FieldByName()
FieldByName()
until
//--------------------------------------------
Почему я говорю про txt файлы [для непонятливого Desdechado]. В базе Access можно сделать макрос который создаст нужный txt, и потом использовать его - LoadFromFile - что быстрее??? и экономнее - вот какую оценку я от вас хотел услышать.
LaidBack (2004-03-05 06:05:00) [10]Зависит от конкретной реализации.
У меня были случаи когда приходилось грузить таблицу в память.
Иногда спасал TRxMemData, иногда брал TList. Но TStringList не очень удобен.
Zacho (2004-03-04 20:25:00) [11]А меня сильно смущает "записи сразу брать из всех колонок или загружать по колонкам отдельно" ... Я так и не понял, что автор ветки хотел этим сказать :(
jack128 (2004-03-04 20:19:00) [12]с учетом выше сказонного меня, к тому же смущает вот эта фраза
> в начале довольно солидного txt файла и поиск по нему
Zacho (2004-03-04 19:31:00) [13]В общем, пока ты нормально не опишешь свою задачу, тебе никто нормально не ответит.
ЗЫ: А фразы типа "Дельфийские классы не являются столь уж скоростными" и дальнейшие наводят на какие-то странные мысли. Например, на мысли что автор поста слабо разбирается в механизме работы класса TDataSet (я могу и ошибаться, естественно) , и к тому же не указывает с какой СУБД и какими компонентами доступа он работает.
ЗЗЫ Скоростными относительно чего ???
Desdechado (2004-03-04 18:50:00) [14]смотря чего делаешь...
а что, txt - это твоя БД?
Nikolay M. (2004-03-04 17:31:00) [15]
> Передо мной предстала задача оптимизации.
:)
Оптимизации чего или кого, если не секрет? :)