![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Доступ к полям - Как быстрее?
AlexanderSK © (2003-03-25 16:15:00)Как лучше работать с полями?
FieldByName или X := FindField и дальше работаем через X?
Заранее спасибо!
passm (2003-03-26 09:33:00) [1]Обычно поступаю как <Соловьев © (25.03.03 16:34)> про это и писал <passm © (25.03.03 16:19)>. Помимо скорости есть плюс в удобстве при описании абстрактных компонент/форм и использовании конкретных свойств полей (TStringField, TFloatField etc.).
Johnmen © (26.03.03 01:10)> Вспоминается анекдот про жену программиста с ребенком в зоопарке :))
Johnmen (2003-03-26 01:10:00) [2]>MsGuns © (25.03.03 20:29)
>Но, блин, я упорный, я его, гада, массой возьму !
Не, лучше ж..ой, в смысле усидчивостью... :)))))))))))
MsGuns (2003-03-25 20:29:00) [3]>Val © (25.03.03 20:22)
Сразу не врубился. Юмор тонок для "юного исследователя TIBDataSet" (меня т.е.) ;)))
Задрал меня уже этот датасет - ну не хочет ни апдетиться, ни рефрешиться, ни позиционироваться ни вообще ни хрена ! Но, блин, я упорный, я его, гада, массой возьму !
Val (2003-03-25 20:22:00) [4]:) Сергей, я говорил не о сравнении с Fields[i], а о сравнении со статическим набором полей. Ведь это(получение статического набора) делается при присвоении поля в примере DoNothing, но тогда непонятно, почему бы просто не получить этот набор как в Соловьев © (25.03.03 16:34), хотя, судя по смайлу, passm © (25.03.03 16:55) просто прикололся :)
MsGuns (2003-03-25 20:12:00) [5]>Val © (25.03.03 19:48)
>по идее быстрее, но нафиг
Быстрее в смысле, что не надо просматривать всю коллекцию на предмет совпадения св-ва "Имя поля" ? А вот если по индексу (Fields[i]), так шустрее ? Чушь собачья, извини за резкость. Поиск в коллекции (фактически есть база и циклически меняемое смещение - индекс) весь происходит в ОП, причем для коллекции полей - очень небольшого размера. Проц, и так прохлаждающийся перманентно, схавает этот цикл, не заметив. Другое дело, что прога занимает энное кол-во мегабайт виртуала и виндузе часто-густо приходится свопироваться - так это беда не FieldsByName, а либо горе-программера, либо ограниченности ресурсов компа.
Зато в читабельности перл Fields[i+y*n] или MyField.As... сродни китайской грамоте. Когда вижу подобный код, хочется выпить с горя !
Val (2003-03-25 19:48:00) [6]>MsGuns © (25.03.03 19:14)
по идее быстрее, но нафиг. Cм. Johnmen © (25.03.03 16:46)
>les © (25.03.03 17:16)
ускользнет контроль над полями, лучше конкретизировать.
MsGuns (2003-03-25 19:14:00) [7]>passm © (25.03.03 16:55)
И что, так будет быстрее ? В смысле затрат Проц-Память.
Сильно сомневаюсь, хоть компиллятор и оптимизирующий.
les (2003-03-25 17:16:00) [8]
> Доступ к полям - Как быстрее?
DataSet<поле>.As...
> Нет у меня дизайна!
Тогда бистрее - TDataSet.Fields[index].As...
passm (2003-03-25 16:55:00) [9]AlexanderSK © (25.03.03 16:42)>
procedure DoNothing(DataSet: TDataSet); { :)) }
var
f1, f2: TField;
begin
{...}
f1:= DataSet.FieldByName("FIELD1");
f2:= DataSet.FieldByName("FIELD2");
{ use f1 and f2}
end;
Johnmen (2003-03-25 16:46:00) [10]По моему мнению, не надо заморачиваться на быстродействие, ты его не почувствуешь, и обращаться к полям FieldByName("MyFieldName") и к значениям полей FieldByName("MyFieldName").As...
AlexanderSK (2003-03-25 16:42:00) [11]>Соловьев ©
Нет у меня дизайна! Точнее в дизайне не известно какие будут поля!
Соловьев (2003-03-25 16:34:00) [12]не 2-й, а просто в дизайне дважды кликаешь на компоненте.
AlexanderSK (2003-03-25 16:31:00) [13]>passm ©
Поля получаются путем загрузки данных.
>Johnmen ©
Т.е. второй вариант?
Johnmen (2003-03-25 16:19:00) [14]Создать список поле для НД и далее -
MySecretField.As...:=...
самое быстрое, но не самое понятное и красивое...
passm (2003-03-25 16:19:00) [15]AlexanderSK © (25.03.03 16:15)> Если поля создавать явно в Design Time