Alexey_Gawrilow

Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Prot_XT Цитата: Не особо понял к чему это | К тому, что внутри еще циклы. и, как пример, варианта 2: 1) Создаем статические привязанные поля в DesignTime и обращаемся к ним Код: odsTableName: TOracleDataset; odsTableNameID: TIntegerField; odsTableNameValue: TStringField; ... odsTableName.Open; try while not odsTableName.EOF do begin Strings.AddObject(odsTableNameValue.AsString, TObject(odsTableNameID.AsInteger)); odsTableName.Next; end; finally odsTableName.Close; end; | 2) Выполняем привязку перед циклом Код: odsSelect: TOracleDataset; ... var fID, fValue: TField; begin ... odsSelect.SQL.Text := QueryTextGetByParams(....); odsSelect.Open; try fID := odsSelect.FindField(IdFieldName); fValue := odsSelect.FindField(ValueFieldName); Assert(Assigned(fID), '<guid>'); Assert(Assigned(fIValue), '<guid>'); ... while not odsSelect.EOF do begin Strings.AddObject(fValue.AsString, TObject(fID.AsInteger)); odsSelect.Next; end; finally odsSelect.Close; end; | XPerformer Цитата: на работе часто пишите циклы по аппенду мильона записей? | Постоянно. Одна из специфик - ETL. dred2k Цитата: Насчет FindField это, верно, шутка ? | Нет, не шутка. FieldByName дает Exception. FindField дает результат, который нужно проверить. FindField вызвывается 1 раз, перед циклом. Цитата: десятки локальных переменных, массивов | Скорее класс маппинга. Это когда нельзя использовать DirectPathLoader или ArrayInsert, речь об Oracle. Всегда - выбор и обоснования. DirectPathLoader дает максимально возможную скорость заливки, но обладает списком существенных ограничений. ArrayInsert требует маппинга значений в массив. Insert самый медленный, хинт /*+APPEND*/ увеличивает на проценты, тогда как ArrayInsert в разы. Цитата: Грозен ты на собеседованиях. | Ключевая фраза - не обосновывает. Мне даже не важно, что отвечал, важно как. Думает, документацию смотрит, исходники + спрашивает на форуме - спрашивает на форуме, потом думает, документацию смотрит, тесты пишет, как вот в этом треде +(+) потому как Цитата: Глубокая оптимизация - задача совершенно отдельная | Это не про нее. Речь о надежности. Получил параметр, проверил, и в бой. Если решение на пару запусков под контролем разработчика - разрешено все. Если в продакш, под большую нагрузку - упасть ничего не должно. И это.. это не АЭС. Это просто деньги. Условия контракта с клиентом, когда в требованиях от 9(девяток) рябит. Как пример..из прошлого.. попробуйте записать ход технологического процесса - показания датчиков. В аварийном режиме. Для электрооборудования, например запротоколировать аварию на подстанции. Там вообще про DB слой забыть приходится. Как пример..из настоящего.. промышленная печать, онлайн сканирование, контроль дублей, отбраковка. Цитата: Зачем нужны таблицы в памяти без сортировок и индексов? | Например, при реализации DashBoard. Потоки работают, кидают нотификации. Минитор, записывает значения в таблицу-в-памяти. Визуализируем через грид, в Quantum(DX), красивенький прогрессбар. Добавлено: XPerformer Цитата: 4-5 сек против 8-9 сек в среднем...я даже затрудняюсь сказать какая ошеломительная прибавка в скорости программы (такта 2 наверно) | Кабы так - проблемы вообще нет. А увеличение скорости заливки с часов до минут - того стоит. Добавлено: И да, я за правильный код. Вернее не так. Я за код, который работает правильно. http://www.osnews.com/story/19266/WTFs_m http://ru.wikipedia.org/wiki/%CC%E0%EA%EA%EE%ED%ED%E5%EB%EB,_%D1%F2%E8%E2 http://www.linux.org.ru/forum/talks/3282903 http://www.xakep.ru/post/46172/ http://avl2.info/index.php?option=com_content&view=article&id=166:97p93&catid=5:97thingsprogrammer&Itemid=8 |