Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.052 c
14-1079094151
ferrik
2004-03-12 15:22
2004.04.04
RichView


1-1079324097
Kair
2004-03-15 07:14
2004.04.04
Асоциирование файлов с программой


4-1075366573
barby
2004-01-29 11:56
2004.04.04
Удаление непустой директории


14-1078486964
Denis_Visma
2004-03-05 14:42
2004.04.04
Где найти компоненты Developer Express?


1-1079602519
Kupnu4
2004-03-18 12:35
2004.04.04
Ошибка при загрузке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский