Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event / 16 сообщений из 16, страница 1 из 1
13.11.2003, 18:59
    #32323602
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
Упустил момент, когда все сюда перебрались.. Потому повтор вопроса из другого форума.
В 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
13.11.2003, 19:50
    #32323661
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
Думаю в 9ке будет тоже самое. Видимо связано с коренным изменением Memory Management routines...
...
Рейтинг: 0 / 0
13.11.2003, 22:06
    #32323750
cbusel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
А в 10-ке хуже чем в 9-ке.
Наверное единственное, что можно посоветовать: исполнять скрипт, который внутри retrieverow (yield или что там еще) не всякий раз, а скажем через 100 записей.
...
Рейтинг: 0 / 0
13.11.2003, 23:31
    #32323767
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
cbusel , вы вслепую печатаете? Этот метод оставляет меньше времени для раздумий :-)
ЛЮБОЙ скрипт, который внутри retrieverow, даже закоментированный, есть имплицитный yield ...
...
Рейтинг: 0 / 0
14.11.2003, 08:02
    #32323868
Black Savage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
To Филипп : Прошу прощения, а можно мне растолковать фразу:
ЛЮБОЙ скрипт, который внутри retrieverow, даже закоментированный, есть имплицитный yield
Больше всего меня заинтересовало именно высказывание на счет закоментированный ...
...
Рейтинг: 0 / 0
14.11.2003, 09:32
    #32323946
eddi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
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
14.11.2003, 12:39
    #32324304
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
Надо заметить - повторюсь - из-за изменения "Memory Management routines" Pb8 корректно выгружает данные лишь начиная с версии Pb803. Потому использование трёх первых релизов этой версии для серьёзных задач, судя по всему, нецелесообразно.
Для cbusel:
Как правильно процитировал help eddi, даже просто комментарий в retrieverow включает этот механизм асинхронности при отборе данных.. Конечно, я попробовал оставить только комментарий (там еще что-то было) - эффект тот же..
Для Филиппа:
Несомненные глубокие знания по обсуждаемым вопросам конечно позволяют порезвиться, но Вам не кажется, что это мальчишество? Почему бы просто - (и попроще - в соответствии с KISS :-)))) не объяснить, раз уж взялись? Каюсь, я и сам резвился (в других областях:-)))); удовольствие минутное, зато авторитета не прибавляет. Просто разговаривать перестают. Авторитета прибавляет терпеливое и понятное окружающим разъяснение вопроса.
...
Рейтинг: 0 / 0
14.11.2003, 19:08
    #32325093
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
Антон, проблема в том, что г-н cbusel регулярно , во многих топиках повторяет одно и тоже - вставляет непродуманные комментарии.
Главный (негативный) результат - направление хода мыслей вопрошающего в абсолютно ненужном направлении.
Мне уже надоело поправлять, следующий этап - сарказм.
...
Рейтинг: 0 / 0
15.11.2003, 00:15
    #32325221
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
Филипп
Боюсь что сарказм тоже делу не поможет, тут уж лучше или написать, что человек не прав и обьяснить почему, процитировать кусок Help-а, ну или вообще промолчать, если надоело обьяснять, почему Вы считаете, что человек не прав.

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

А setredraw(false) выполнено? У меня была точно такая же проблема, после setredraw 65536 записей стали грузиться в DW секунды за 3. PB80x, retrieverow присутствует. Если речь идет о DW, конечно.
...
Рейтинг: 0 / 0
16.11.2003, 18:27
    #32325700
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
Опаньки!!! Действительно, 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
16.11.2003, 18:29
    #32325701
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
Ошибочка... конечно,
RetrieveEnd:
this.setredraw(true)
...
Рейтинг: 0 / 0
17.11.2003, 05:38
    #32325773
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
Видать, я где-то торможу, но всё таки, не могли бы вы мне объяснить, зачем при написании кода в retrieverow event выключать Redraw? Если вы что-то собрались в каждый ряд пихать, то раз выключаете Redraw, то можно вообще ничего в retrieverow не делать, а просто после всего retrievа это сделать и потом включить Redraw. Суть кода в retrieverow в том, что datawindow начинает делать cursor fetch вместо block reads, поэтому код там должен быть действительно оправдан.

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


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