|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
Упустил момент, когда все сюда перебрались.. Потому повтор вопроса из другого форума. В 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 какие-нибудь комментарии будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 18:59 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
Думаю в 9ке будет тоже самое. Видимо связано с коренным изменением Memory Management routines... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 19:50 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
А в 10-ке хуже чем в 9-ке. Наверное единственное, что можно посоветовать: исполнять скрипт, который внутри retrieverow (yield или что там еще) не всякий раз, а скажем через 100 записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 22:06 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
cbusel , вы вслепую печатаете? Этот метод оставляет меньше времени для раздумий :-) ЛЮБОЙ скрипт, который внутри retrieverow, даже закоментированный, есть имплицитный yield ... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 23:31 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
To Филипп : Прошу прощения, а можно мне растолковать фразу: ЛЮБОЙ скрипт, который внутри retrieverow, даже закоментированный, есть имплицитный yield Больше всего меня заинтересовало именно высказывание на счет закоментированный ... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2003, 08:02 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
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). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2003, 09:32 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
Надо заметить - повторюсь - из-за изменения "Memory Management routines" Pb8 корректно выгружает данные лишь начиная с версии Pb803. Потому использование трёх первых релизов этой версии для серьёзных задач, судя по всему, нецелесообразно. Для cbusel: Как правильно процитировал help eddi, даже просто комментарий в retrieverow включает этот механизм асинхронности при отборе данных.. Конечно, я попробовал оставить только комментарий (там еще что-то было) - эффект тот же.. Для Филиппа: Несомненные глубокие знания по обсуждаемым вопросам конечно позволяют порезвиться, но Вам не кажется, что это мальчишество? Почему бы просто - (и попроще - в соответствии с KISS :-)))) не объяснить, раз уж взялись? Каюсь, я и сам резвился (в других областях:-)))); удовольствие минутное, зато авторитета не прибавляет. Просто разговаривать перестают. Авторитета прибавляет терпеливое и понятное окружающим разъяснение вопроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2003, 12:39 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
Антон, проблема в том, что г-н cbusel регулярно , во многих топиках повторяет одно и тоже - вставляет непродуманные комментарии. Главный (негативный) результат - направление хода мыслей вопрошающего в абсолютно ненужном направлении. Мне уже надоело поправлять, следующий этап - сарказм. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2003, 19:08 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
Филипп Боюсь что сарказм тоже делу не поможет, тут уж лучше или написать, что человек не прав и обьяснить почему, процитировать кусок Help-а, ну или вообще промолчать, если надоело обьяснять, почему Вы считаете, что человек не прав. А вообще кстати так ради интереса никто не пытался найти решение данной проблемы без использования RetrieveRow ? В принципе можно и на Header.Color повесить глобальную функцию, которая могла бы DBCancel вызывать. Ускорило бы в разы. Вот только как с ее помощью понять, что пользователь хочет прервать процесс построения отчета - ну разве что через WINAPI буфер клавиатуры читать и отлавливать хаотичную серию нажатий Esc пользователем :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2003, 00:15 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
2 Антон Приходько А setredraw(false) выполнено? У меня была точно такая же проблема, после setredraw 65536 записей стали грузиться в DW секунды за 3. PB80x, retrieverow присутствует. Если речь идет о DW, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2003, 03:00 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
Опаньки!!! Действительно, 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: Мои благодарности! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2003, 18:27 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
Ошибочка... конечно, RetrieveEnd: this.setredraw(true) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2003, 18:29 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
Видать, я где-то торможу, но всё таки, не могли бы вы мне объяснить, зачем при написании кода в retrieverow event выключать Redraw? Если вы что-то собрались в каждый ряд пихать, то раз выключаете Redraw, то можно вообще ничего в retrieverow не делать, а просто после всего retrievа это сделать и потом включить Redraw. Суть кода в retrieverow в том, что datawindow начинает делать cursor fetch вместо block reads, поэтому код там должен быть действительно оправдан. А если задача в "Типа пролистнуть можно" состоит, то для этого RetrieveAsNeeded существует. Ну а о количестве рядов больше 1000, которые кто-то там листать собрался, я уж и не говорю... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2003, 05:38 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
"Понять это невозможно - принять только..." Тот, кому мы поставляем продукт, хочет, чтобы: 1) Result set был целиком и как можно быстрее на клиенте , потому Retrieve.AsNeeded не годится... да и неудачное дерганье за scrollbar в этом режиме всё равно вызывает отбор до конца.. и много других неудобств.. 2) при нажатии кнопки "Отобрать" была быстрая реакция системы - не просто голый экран с часиками, но видна динамика - КАК это происходит. Окошка с бегущим числом записей недостаточно. А так всё дышит, scrollbar (хотя и дискретно) бежит , строки видны . 3) можно было это остановить в любой момент - когда захочется. Особенно это полезно, когда анализируют возможности системы вообще. Ведь и в конкурсах надо выигрывать - не только работать в ней..:-))) Большое неудобство в том, что либо retrieveRow либо есть, либо нет. Как бы включение этого в настроку вынести... А так приходиться статично класть на окно либо dw с ним, либо без него.:-((( Два объекта сразу - дорого... По этому поводу есть какие-нибудь мысли? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2003, 12:21 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
Самый простой вариант - два базовых объекта DW - один со скриптом, другой - без. И в зависимости от потребностей делать openuserobject либо того, либо другого. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2003, 13:26 |
|
Subject: Pb6.5 vs Pb8.04 по отношению к RetrieveRow event
|
|||
---|---|---|---|
#18+
Всё равно не понимаю, какая может быть видна динамика - КАК это происходит , datawindow всё равно будет показывать Х ПЕРВЫХ рядов, поместившихся в datawindow контроле. Поэтому текстового объекта, сидящего на окошке над твоим контролом, с бегущим числом вынутых из БД записей более чем достаточно... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2003, 18:42 |
|
|
start [/forum/topic.php?fid=15&msg=32325700&tid=1339417]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
310ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 230ms |
total: | 629ms |
0 / 0 |