Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.006 c
1-64567
ng
2002-05-07 12:06
2002.05.20
Как в гриде событие называтся ?


4-64870
SerVS - S
2002-03-17 17:21
2002.05.20
Проблемка с хуками


3-64464
Стас
2002-04-25 09:23
2002.05.20
Количество полей в БД


4-64864
Velocity
2002-03-16 16:40
2002.05.20
StatusBar и ToolBar на API


1-64673
Neon_space
2002-05-06 02:04
2002.05.20
Конвертирование проектов Delphi в проекты C++ Builder





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский