Текущее время: Сб, авг 02 2025, 01:57

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 12:16 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
vvvictor написал:
Или я один такой извращенец ?
Пока одним обходимся. А вот describe table lines работает медленней чем lines( ).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 12:17 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
Tetty написал:
Все циклы надо выполнять фоновыми заданиями НОЧЬЮ, чтобы пользователи не мешались! ;)
Особенно когда речь идет об оперативных отчетах :wink:

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 12:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Tetty написал:
vvvictor написал:
Mike1 написал:
странно, что не упомянули про loop .... assigning.
А с многопоточным кодом никто не эксперементировал ? :lol: :lol: :lol: :lol: :lol:
Или я один такой извращенец ?


Все циклы надо выполнять фоновыми заданиями НОЧЬЮ, чтобы пользователи не мешались! ;)

Эт вопрос спорный :D У нас система не спит.... Круглые сутки идет пакетная загрузка производственных заказов :D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Loop
СообщениеДобавлено: Вт, сен 11 2007, 14:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
_gary_ написал(а):
...
В итоге получилось что второй вариант работает медленне чем первый. почему так?

Для начала хотелось бы увидеть структуру tab_2 и tab_1!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 16:25 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
сделал в виде:
loop at tab_1.
read table tab_2 with key field_1 = tab_1-field_1
field_2 = tab_1-field_2.
if sy-subrc = 0.
sidx = sy-tabix.
while tab_2-field_1 = tab_1-field_1 and tab_2-field_2 = tab_1-field_2.

...чето делаем

sidx = sidx + 1.
read table tab_2 index sidx.
if sy-subrc <> 0.
exit.
endif.
endwhile.
endif.
endloop.

Отработало за 20сек.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 17:17 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
_gary_ написал(а):
Отработало за 20сек.
2 all
код _gary_ может работать с ошибками на системах 4.0 и 4.6С
2 _gary_
1 огласите pls версию системы на которой работаете
2 select * всегда работает медленней чем select[необходимый список полей]
3 В конструкцию read table tab_2 with key field_1 = tab_1-field_1 field_2 = tab_1-field_2 не повредит добавить transporting no fields


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 17:36 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
у нас система 4.6.

про select с необходимыми полями и no-transporting - это все понятно, но это уже от задачи зависит. Я же просто проверял.
Меня интересовал просто сам факт: почему с отсортированой таблицей код работает намного медленнее, чем с неотсортированой.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 17:52 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
не надо обобщать частный случай до тендеции,
1 Видимо в tab_2 field_1 field_2 в каждой итерации составляют малый процент данных.
2 loop .... assigning на любой версии приносят повышение производительности это тоже резерв по скорости.
3 после многократного повтора выборки по одним и тем же данным
данные лежат в кеше базы данных - оттуда и такое радикальное повышение производительности.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 11 2007, 18:34 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
_gary_ написал(а):
Меня интересовал просто сам факт: почему с отсортированой таблицей код работает намного медленнее, чем с неотсортированой.


Эти результаты касаются какого кода, первого со вложенными loop или второго с read?
Read без бинарного поиска ишет последовательно до первого нахождения по ключу. В неотсортированной таблице запись с совпадающим ключем может быть ближе к началу. Случайное совпадение, но результат неожиданный. Надо данные Ваши смотреть, без них конкретные показатели обсуждать бесполезно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 12 2007, 06:29 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 02 2006, 18:56
Сообщения: 78
может время тратится на сортировку в бд?
если попробовать так
data tab_dummy like standard table of tab2. "header line от tab2
select ... into table tab_dummy.
tab2[] = tab_dummy.
и дальше как было


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 12 2007, 08:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
_gary_ написал(а):
Меня интересовал просто сам факт: почему с отсортированой таблицей код работает намного медленнее, чем с неотсортированой.

Если все еще интересует, ответь на мой предыдущий пост. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 12 2007, 09:12 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 02 2006, 18:56
Сообщения: 78
ИМХО: максимальная производительность будет если сделать так:
data: tab1 type table of typ1,
tab2 type sorted table of typ2 with non-unique key f1 f2,
dummy type table of typ2,
tabix type sy-tabix.
field-symbols: <wa1> type typ1,
<wa2> type typ2.

select .... into table tab1 where ...
select .... into table dummy where ....

* сортировка на appl серваке, а не на бд
sort tab1 by f1 f2.
tab2[] = dummy[].

tabix = 1.
loop at tab1 assigning <wa1>.
"assigning для большой строки (много полей, структ,
"влож. таблицы) лучше чем into

loop at tab2 assigning <wa2>
from tabix "чтоб оптимизировать начало
where f1 = <wa1>-f1
and f2 = <wa1>-f2. " имеено в том порядке как при опред. ключа
tabix = sy-tabix + 1."для старат след итерации в tab1

"do smth...

endloop.

endloop.

ну плюс конечно проверка успешности выборки и т.д. но это уже зависит от того что делать надо (может 2 выборка, и сортироки будут не нужны, если нет первой)

по крайней мере я стараюсь делать примерно так в своих прогах


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Loop
СообщениеДобавлено: Пт, сен 14 2007, 12:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
_gary_ написал(а):
В итоге получилось что второй вариант работает медленне чем первый. почему так?

Похоже первичный вопрос никого не интересует. ;)
Второй вариант явно должен работать быстрее, что я и проверил, так оно и оказалось. Так что ищите кривизну в своем коде, или код в студию. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB