Текущее время: Вт, апр 23 2024, 20:13

Часовой пояс: 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
Сообщения: 1246
Ну если верить вот этому, то
Цитата:
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
Сообщения: 1246
Цитата:
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 часа


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

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


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

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