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