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

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
kserg@ukr.net   (2002-04-18 11:53) [0]

Привет всем.
Прошу, обясните мне в чём отличие 3-х нижеприведенных
способов обращения к полю и какой из способов более правильный
в плане экономии памяти
Query.Fieldbyname("Obozn").AsString
QueryObozn.AsString
Query["Obozn"]

Cпасибо.


 
Reindeer Moss Eater   (2002-04-18 11:57) [1]

Одинаково совершенно


 
GenBr ©   (2002-04-18 12:00) [2]

Только в последнем случае возвращается значение не типа String, a Variant


 
Shaman_Naydak ©   (2002-04-18 12:01) [3]

По памяти - эквивалентные конструкции..
По скорости - второй вариант предпочтительнее (НО! выявить это можно только БОЛЬШОМ цикле(


 
kserg@ukr.net   (2002-04-18 12:02) [4]

>Reindeer Moss Eater
Не совсем согласен.
К примеру, из своего опыта я обнаружил, что если поле= NULL,
то обращение Query["Obozn"] вызывает исключение, а вот
Query.Fieldbyname("Obozn").AsString - нет.


 
Reindeer Moss Eater   (2002-04-18 12:08) [5]

>kserg@ukr.net
А к расходуемой памяти это какое отношение имеет?


 
kserg@ukr.net   (2002-04-18 12:09) [6]

>Shaman_Naydak © (18.04.02 12:01)
А за счет чего появляется выигрыш в скорости ?
(у меня основная таблица содержит около 40полей)


 
Reindeer Moss Eater   (2002-04-18 12:11) [7]

Во втором варианте поле не ищется в памяти


 
kserg@ukr.net   (2002-04-18 12:12) [8]

>Reindeer Moss Eater (18.04.02 12:08)
Причем здесь "экономия памяти", если такой вызов вощще "криво" работает ?
Поэтому, стараюсь избегать таких обращений


 
Val ©   (2002-04-18 12:13) [9]

Но оно должно быть статическим?


 
Reindeer Moss Eater   (2002-04-18 12:16) [10]

>kserg@ukr.net
экономия памяти здесь при том, что именно она волновала автора вопроса


 
kserg@ukr.net   (2002-04-18 12:17) [11]

>Val © (18.04.02 12:13)
>Но оно должно быть статическим?
Недопонял?..
Обясни, плиз


 
Johnmen ©   (2002-04-18 12:21) [12]

Необходимо учитывать время на идентификацию поля и на преобразование типов.
1 вариант тратит время на идентификацию
3 вариант - на преобразование типа
2 наиболее оптимален по скорости, но не оптимален по удобоваримости :)



 
Val ©   (2002-04-18 12:22) [13]

QueryObozn.AsString - для такого обращения к полю QueryObozn должно быть обьявлено в модуле, разве нет?


 
kserg@ukr.net   (2002-04-18 12:24) [14]

>Val © (18.04.02 12:22)
>QueryObozn.AsString - для такого обращения к полю QueryObozn должно быть обьявлено в модуле, разве нет?
Понял - согласен.



 
Anatoly Podgoretsky ©   (2002-04-18 12:27) [15]

Reindeer Moss Eater (18.04.02 12:16)
Тогда второй


 
kserg@ukr.net   (2002-04-18 12:29) [16]

>Val © (18.04.02 12:22)
>QueryObozn.AsString - для такого обращения к полю QueryObozn должно быть обьявлено в модуле, разве нет?
Понял - согласен.



 
Anatoly Podgoretsky ©   (2002-04-18 12:35) [17]

Reindeer Moss Eater (18.04.02 12:16)
Тогда второй


 
kaif ©   (2002-04-18 17:19) [18]

Если в программе много объектов полей, то persistent-поля (2) увеличивают размер хранимых ресурсов (dfm) в exe. Выигрыш по скорости по сравнению с 1 незначителен.
Скорее это вопрос удобства.
Раньше я придерживался варианта 2, теперь придерживаюсь варианта 1 (run-time поля), так как при изменении параметров поля в базе (например, ширины) или динамическом изменении текста запроса вариант 1 удобнее.
Однако во всех тек случаях, когда поля в базе стабильны и требуется дополнительное форматирование (DisplayFormat) или Align или русское название поля (DisplayLabel), предпочитаю использовать вариант 2.
Вариант 3 не использую вообще.


 
kaif ©   (2002-04-18 17:24) [19]

А с точки зрения памяти - все это совершенно неважно, так как основную память жрет сам набор данных, а не объекты TField, и неважно как возникли их свойства, на стадии разработки или в run-time.


 
evgeg ©   (2002-04-18 22:56) [20]

Вариант 2 еще и обеспечивает контроль того, есть ли такое поле в наборе данных на этапе компиляции, а не выполнения, так же на этапе компиляции, а не выполнения контролируется тип поля. Он сымый быстрый, т. к. не тратится время на поиск поля в списке полей (а поиск этот осуществляется простым перебором).


 
IrenFD ©   (2002-04-22 15:02) [21]

1 вариант сам Borland считает почему-то устаревшим, и не рекомендует к использованию, хотя я бросаю на форму один компонент TQuery и потом динамически меняю текст запроса, при таком раскладе 2 вариант слишком трудоемок по сравнению с 1.



Страницы: 1 вся ветка

Текущий архив: 2002.05.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
1-64708
pavit
2002-05-06 17:20
2002.05.20
StringGrid


3-64542
Hamster
2002-04-22 12:00
2002.05.20
Подскажите, как избежать ввода пароля при открытии базы..


1-64677
anod
2002-05-06 00:26
2002.05.20
TLISTVIEW


1-64735
Шаповалов Кирилл
2002-05-07 09:31
2002.05.20
Вывод Timage поверх TWebBrowser


1-64660
kull
2002-05-08 23:09
2002.05.20
Процедура Insert.......