Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2014, 14:40   #1
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
Восклицание "Ускорить" вывод данных из БД, потоки?

Всем Привет!

Суть задачи:
есть файл MS Access, по запросу, их будет около 3-4х десятков, будут заполняться РАЗНЫЕ сетки Grid, запросы через ADO компоненты.

Так вот, имеет смысл распихать запросы в потоки, тем самым плодить к-во компонентов ADO и "умеет" ли Access работать с много поточностью или идти другим путем: выстроить все запросы, а уже в потоках распихивать данные по сеткам т.к. я "понимаю" запрос все равно выполнится быстрее чем заполнится сетка в 1000 строк с 99-ю полями где паралельно будет выставляться ширина, высота строк, "ручная" заливка ячеек, разные шрифты, цвет шрифта для каждой ячейки и т.д.

Подскажите
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 25.02.2014, 15:08   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

первый вопрос а зачем пользователю сразу столько тяжелых (что требуется N>10 запрос каждый из которых работает более 1 секунды).
иначе он может и подождать эти 10 секунд.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 25.02.2014, 16:18   #3
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
первый вопрос а зачем пользователю сразу столько тяжелых (что требуется N>10 запрос каждый из которых работает более 1 секунды).
иначе он может и подождать эти 10 секунд.
В НБА каждая команда играет в регулярном сезоне 82 игры (без плей-офф) соответсвенно будет как минимум 82 строки и в каждой более 200 столбиков (самая развернутая статистика по игре + по каждому игроку). В чемпионате 30 команд и соответственно может быть до 30-ти одновременно открытых вкладок с сеткой для каждой команды с уникальной заливкой, шрифтами ну и т.д.

Я думаю что Вы согласитесь что проводить анализ для 2-х (22-х) команд в отдельной сетке гораздо проще нежели когда все в куче...

О целесообразности, еффективности, оптимизации и систематизации данных вопрос совсем с другой оперы, нужно именно то и именно так как на скрин-шоте. Я понимаю что можно открывать сетку по очереди одну за другой, но на заполнение одной сетки (заливке, подгон размеров и т.д.) на моем ПК уходит около 6-8 секунд, отсюда и встал вопрос разнести в потоки...
Изображения
Тип файла: jpg 1.jpg (124.2 Кб, 119 просмотров)
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 25.02.2014, 16:40   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
на заполнение одной сетки (заливке, подгон размеров и т.д.) на моем ПК уходит около 6-8 секунд, отсюда и встал вопрос разнести в потоки
И как предполагается заполнять VCL-ные визуальные контролы в дополнительных потоках?
northener вне форума Ответить с цитированием
Старый 25.02.2014, 16:43   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

в общем случае VCL (то бишь та самая сетка) однопоточен. смотри про synchronize.
так что надо смотреть код подгонки.
иногда можно сэкономить время если подгонку ограничить отображаемой частью (перенести код подгонки в OnPaint!). И не заниматься тем что не нужно, т.е рассчитывать только те данные которые мы в состоянии отобразить (а это уж точно не 1000 строк и не 100 колонок) (именно так часто и поступает Windows).

Или наоборот "озадачить" этим (цвета/заливки) БД.
Ввести доп. поле, возможно вычислимое(!) на сервере (будут вычисляться все строки)/на клиенте (вычисления при необходимости(читай отрисовке).

ИМХО: вычислимое поле(я) на клиенте для определения характеристик отображения зависящих только от текущей записи.
Более определенное мнение только при коде (или описании алгоритма) расчетов (той самой подгонки).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 25.02.2014 в 16:49.
evg_m вне форума Ответить с цитированием
Старый 25.02.2014, 17:29   #6
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
ИМХО: вычислимое поле(я) на клиенте для определения характеристик отображения зависящих только от текущей записи.
Более определенное мнение только при коде (или описании алгоритма) расчетов (той самой подгонки).
Скажем так:
Есть две сетки TMS (AdvStringGrid) со значениями. В самой сетке есть возможность, свойство (не в событии onDrawCell) явно указать цвет заливки конкретной ячейки. Нужно, в зависимости от значения ячейки, сделать заливку (если значение 1 залить зеленым, 2 - красным).

Вопрос:
Можно заполнять, заливать отдельную сетку в отдельном потоке? и будет ли прирост по производительности?
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 25.02.2014, 17:47   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Можно заполнять, заливать отдельную сетку в отдельном потоке? и будет ли прирост по производительности?
Скорее не будет, возможно даже наоборот из-за накладных расходов. VCL однако. С SQL к ACCESS тоже не будет. Прислушайтесь к рекомендациям evg_m. Да и необходимую информацию из базы можно одним запросом вытащить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.02.2014, 17:54   #8
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Скорее не будет, возможно даже наоборот из-за накладных расходов. VCL однако. С SQL к ACCESS тоже не будет. Прислушайтесь к рекомендациям evg_m. Да и необходимую информацию из базы можно одним запросом вытащить
Вытащить да, мне нужно залить разные сетки, здесь львиная доля времени уходит... Вопрос именно в распаралировании процесса заливки... если впихнуть в потоки прирост производительности будет?
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 25.02.2014, 18:48   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

не впихнете
eval вне форума Ответить с цитированием
Старый 25.02.2014, 19:02   #10
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

прироста не будет, но геморроя добавит...
что за база и как оно может 6-8 секунд инфу в ней искать? индексы, связи?
да и в базе ли тормоза?
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 25.02.2014 в 20:09.
Slym вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа функциями "ЕСЛИ", "И" и вывод текстового результата johny_03 Microsoft Office Excel 3 04.08.2014 11:01
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Как "повесить " передачу данных из формы на событие нажатия кнопки типа "button" ? vedro-compota JavaScript, Ajax 10 14.12.2010 21:05
вывод данных из формы в формате "dd.mm.yy" serikov Microsoft Office Excel 3 07.07.2010 08:59
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42