Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Оптимизация или что быстрее стринглист или проход по базе   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.027 c
1-1079074966
Yuri Btr
2004-03-12 10:02
2004.04.04
Область видимости свойств класса


1-1079598011
Jao Dao Dzen
2004-03-18 11:20
2004.04.04
время между двумя событиями


4-1074793449
.Влад
2004-01-22 20:44
2004.04.04
информация по написанию плагинов.


7-1074190873
RAV
2004-01-15 21:21
2004.04.04
Как скрыть процесс в win2003 ?


1-1079688897
Ёпрст
2004-03-19 12:34
2004.04.04
Интерактивное назначение обработчика