Текущее время: Ср, июн 25 2025, 08:28

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Сложность алгоритмов в SAP
СообщениеДобавлено: Сб, окт 03 2015, 02:41 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июн 15 2007, 16:24
Сообщения: 98
Коллеги, подскажите, какова сложность вставки в обычную таблицу? Декларация такая:
DATA t_x type table of X.
Ну и insert ... index z.

Какова организация обычных массивов в сапике? paging есть?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сложность алгоритмов в SAP
СообщениеДобавлено: Сб, окт 03 2015, 10:27 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Ну если верить вот этому, то
Цитата:
The index access is usually the quickest access type for an internal table line since there is a direct internal reference.

Т.е. можно предположить, что сложность O(1)
Под paging вы что имеет ввиду?

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сложность алгоритмов в SAP
СообщениеДобавлено: Сб, окт 03 2015, 15:07 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июн 15 2007, 16:24
Сообщения: 98
Кодер написал(а):
Ну если верить вот этому, то
Цитата:
The index access is usually the quickest access type for an internal table line since there is a direct internal reference.

Т.е. можно предположить, что сложность O(1)
Под paging вы что имеет ввиду?


С access то все понятно. Интересует insert. В худшем случае (таблица есть обычный массив в памяти) - стоимость вставки = O(N).
paging, наверное, некорректно выразился, имел ввиду нечто типа страниц в СУБД - тогда вставка O(1).


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сложность алгоритмов в SAP
СообщениеДобавлено: Сб, окт 03 2015, 22:17 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Николай Рыжов написал(а):
С access то все понятно. Интересует insert. В худшем случае (таблица есть обычный массив в памяти) - стоимость вставки = O(N).
Таблица - не обычный массив. Насколько я помню - строка добавляется куда получится (в конец массива, например), а вся работа идет с индексом. Так что стоимость вставки для таблицы как для массива O(1), стоимость вставки для индекса O(N), как рассчитать стоимость вставки в целом - я без понятия :)

P.S. вам для чего, если не секрет?

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сложность алгоритмов в SAP
СообщениеДобавлено: Вс, окт 04 2015, 01:41 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, июн 15 2007, 16:24
Сообщения: 98
Ну в целом сложность тогда O(N), конечно, хотя видимым это должно стать только при весьма больших N. Спасибо за информацию!

Интересуюсь скорее больше теоретически. Вопрос вылез из более частного - что быстрее:

SORT xxx BY yyy.
DELETE ADJ DUP from xxx COMP BY yyy.

или цикл по xxx и COLLECT в другую таблицу.

Учитывая информацию, которую вы написали - теоретически первый подход быстрее. O(N * log(N)) vs O(N^2) соответственно (COLLECT предполагается в стандартную таблицу, не хэш и не сортированная. С хэшем, конечно, O(N), но это другая задача :) ).


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сложность алгоритмов в SAP  Тема решена
СообщениеДобавлено: Вс, окт 04 2015, 14:13 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Цитата:
SORT xxx BY yyy.
DELETE ADJ DUP from xxx COMP BY yyy.

или цикл по xxx и COLLECT в другую таблицу.


Эммм.. на больших размерах внутр.таблицы это будет сильно зависеть от. Память под внутр. таблицу не выделяется "построчно", она выделяется блоками (ага-ага - page). Причем сперва блоки 8кб. Далее - блоки в зависимости от размера строки-8-16кб. Поэтому и стоит рекомендация: если вы даже ожидаете в табле немного записей - ставьте адекватный INITIAL SIZE при ее объявлении (чтобы все было в пределах одной page).
При использовании collect, у вас будет 2 таблицы вместо одной (съедаем больше памяти, которая тоже будет разложена по своим page). Но с др. стороны, если collect у вас происходит в станд.таблицу и больше никаких действий вы над ней не выполняете(insert\delete\modify), то интерпретатор будет выполнять ее с использованием temporary hash administration.
Внутри реализовано много всяких оптимизаций, поэтому четкого ответа по сложности видимо нет. Общее представление об устройстве можно получить в книге sappress ABAP Performance Tuning

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

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


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

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot]


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

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