powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
16 сообщений из 16, страница 1 из 1
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32323602
Упустил момент, когда все сюда перебрались.. Потому повтор вопроса из другого форума.
В Pb8.04 по сравнению с Pb6.5 существенно изменилась не в лучшую сторону динамика увеличения времени отбора данных с возможностью остановить отбор и без неё. Как известно, это делается при скриптировании события RetrieveRow.
Время отбора для Pb6.5 (с возможностью прерывания) растет, во всяком случае, не более, чем линейно с количеством отобранных строк, что понятно и вполне приемлемо.
То же время для Pb8.04 растет... не буду говорить, что экспоненциально, но уж во всяком случае, не линейно вместе с количеством строк.
Скажем, на насыщенной строке (много столбцов, выпадающих списков и т.д.) разница на 60 000 записях полминуты и 7,5 минут для Pb8.04, а на 900 000 строк 6 минут первый отбор, а второй я остановил после двух часов, причем, не было и половины. Динамика процесса не предполагала окончания отбора в этом месяце..:-))) При этом память на данные - по моим впечатлениям - Pb804 использует экономнее...
Рабочая станция: чипсет Springdale, P4 2,4 Гц, памяти двухканальной DDR400 1G, WINXP SP2, все дела...
Фигня-с, однака - с... О целесообразности подобного отбора вопрос не ставится. Просто шеф ТАКОГО ПОВЕДЕНИЯ ПРОГРАММЫ не хочет.
У меня нет PB9 - никто не знает, как там обстоит дело в этом отношении? А может, и по поводу Pb8.04 какие-нибудь комментарии будут?
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32323661
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю в 9ке будет тоже самое. Видимо связано с коренным изменением Memory Management routines...
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32323750
cbusel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в 10-ке хуже чем в 9-ке.
Наверное единственное, что можно посоветовать: исполнять скрипт, который внутри retrieverow (yield или что там еще) не всякий раз, а скажем через 100 записей.
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32323767
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cbusel , вы вслепую печатаете? Этот метод оставляет меньше времени для раздумий :-)
ЛЮБОЙ скрипт, который внутри retrieverow, даже закоментированный, есть имплицитный yield ...
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32323868
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Филипп : Прошу прощения, а можно мне растолковать фразу:
ЛЮБОЙ скрипт, который внутри retrieverow, даже закоментированный, есть имплицитный yield
Больше всего меня заинтересовало именно высказывание на счет закоментированный ...
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32323946
eddi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
By writing code in this event (even a single line comment), user will see the data on the screen as soon as the first row is received by PowerBuilder (of course, code for this event is executed before it is displayed on the screen).
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32324304
Надо заметить - повторюсь - из-за изменения "Memory Management routines" Pb8 корректно выгружает данные лишь начиная с версии Pb803. Потому использование трёх первых релизов этой версии для серьёзных задач, судя по всему, нецелесообразно.
Для cbusel:
Как правильно процитировал help eddi, даже просто комментарий в retrieverow включает этот механизм асинхронности при отборе данных.. Конечно, я попробовал оставить только комментарий (там еще что-то было) - эффект тот же..
Для Филиппа:
Несомненные глубокие знания по обсуждаемым вопросам конечно позволяют порезвиться, но Вам не кажется, что это мальчишество? Почему бы просто - (и попроще - в соответствии с KISS :-)))) не объяснить, раз уж взялись? Каюсь, я и сам резвился (в других областях:-)))); удовольствие минутное, зато авторитета не прибавляет. Просто разговаривать перестают. Авторитета прибавляет терпеливое и понятное окружающим разъяснение вопроса.
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32325093
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон, проблема в том, что г-н cbusel регулярно , во многих топиках повторяет одно и тоже - вставляет непродуманные комментарии.
Главный (негативный) результат - направление хода мыслей вопрошающего в абсолютно ненужном направлении.
Мне уже надоело поправлять, следующий этап - сарказм.
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32325221
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филипп
Боюсь что сарказм тоже делу не поможет, тут уж лучше или написать, что человек не прав и обьяснить почему, процитировать кусок Help-а, ну или вообще промолчать, если надоело обьяснять, почему Вы считаете, что человек не прав.

А вообще кстати так ради интереса никто не пытался найти решение данной проблемы без использования RetrieveRow ? В принципе можно и на Header.Color повесить глобальную функцию, которая могла бы DBCancel вызывать. Ускорило бы в разы. Вот только как с ее помощью понять, что пользователь хочет прервать процесс построения отчета - ну разве что через WINAPI буфер клавиатуры читать и отлавливать хаотичную серию нажатий Esc пользователем :)
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32325550
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Антон Приходько

А setredraw(false) выполнено? У меня была точно такая же проблема, после setredraw 65536 записей стали грузиться в DW секунды за 3. PB80x, retrieverow присутствует. Если речь идет о DW, конечно.
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32325700
Опаньки!!! Действительно, setredraw() было выставлено в true. Правда, и в Pb6.5 также было true. При выставлении в false всё прет быстро и процесс не замедляется!!
Беда только, что на экране нету строк отображаемых. Выход: включать и выключать отрисовку каждые n записей, где n по усмотрению...
Сделал так (n=1000):

RetrieveStart:
this.setredraw(false)

RetrievwRow:
if mod(row,1000)=0 then this.setredraw(true)
if mod(row,1000)=1 then this.setredraw(false)

RetrieveEnd:
setredraw(false)

Тогда после каждой тысячи записей задержка на полсекунды, но общего замедления нет. И строки отображаются - со всеми вытекающими. Типа пролистнуть можно
Для с127:
Мои благодарности!
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32325701
Ошибочка... конечно,
RetrieveEnd:
this.setredraw(true)
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32325773
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видать, я где-то торможу, но всё таки, не могли бы вы мне объяснить, зачем при написании кода в retrieverow event выключать Redraw? Если вы что-то собрались в каждый ряд пихать, то раз выключаете Redraw, то можно вообще ничего в retrieverow не делать, а просто после всего retrievа это сделать и потом включить Redraw. Суть кода в retrieverow в том, что datawindow начинает делать cursor fetch вместо block reads, поэтому код там должен быть действительно оправдан.

А если задача в "Типа пролистнуть можно" состоит, то для этого RetrieveAsNeeded существует.
Ну а о количестве рядов больше 1000, которые кто-то там листать собрался, я уж и не говорю...
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32326048
"Понять это невозможно - принять только..."
Тот, кому мы поставляем продукт, хочет, чтобы:
1) Result set был целиком и как можно быстрее на клиенте , потому Retrieve.AsNeeded не годится... да и неудачное дерганье за scrollbar в этом режиме всё равно вызывает отбор до конца.. и много других неудобств..
2) при нажатии кнопки "Отобрать" была быстрая реакция системы - не просто голый экран с часиками, но видна динамика - КАК это происходит. Окошка с бегущим числом записей недостаточно. А так всё дышит, scrollbar (хотя и дискретно) бежит , строки видны .
3) можно было это остановить в любой момент - когда захочется.
Особенно это полезно, когда анализируют возможности системы вообще. Ведь и в конкурсах надо выигрывать - не только работать в ней..:-)))
Большое неудобство в том, что либо retrieveRow либо есть, либо нет. Как бы включение этого в настроку вынести... А так приходиться статично класть на окно либо dw с ним, либо без него.:-((( Два объекта сразу - дорого... По этому поводу есть какие-нибудь мысли?
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32326128
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самый простой вариант - два базовых объекта DW - один со скриптом, другой - без. И в зависимости от потребностей делать openuserobject либо того, либо другого.
...
Рейтинг: 0 / 0
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
    #32326726
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё равно не понимаю, какая может быть видна динамика - КАК это происходит , datawindow всё равно будет показывать Х ПЕРВЫХ рядов, поместившихся в datawindow контроле.
Поэтому текстового объекта, сидящего на окошке над твоим контролом, с бегущим числом вынутых из БД записей более чем достаточно...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]