Меню

Заметки старого АБАПника

|

Дихотомический поиск в стандартной таблице.

4. Дихотомический поиск в стандартной таблице.

Мы уже ранее убедились, что дихотомический поиск быстрее сплошного. Также известно, что в стандартных внутренних таблицах также можно устраивать дихотомический поиск для чего можно использовать фразу BYNARY SEARCH. Не забудем, что для того, чтобы это работало без ошибок, стандартную таблицу нужно отсортировать по тем полям, по которым будет осуществляться поиск. Добавим в предыдущую программу (REPORT  ZQK003) дихотомический поиск по стандартной таблице и измерим его продолжительность. Заодно замерим время , потребное на сортировку стандартной внутренней таблицы.

REPORT  ZQK004.
data
  : begin   of gs
  ,   nnn type n length 10
  , end     of gs
  , gt1   like standard table of gs with non-unique key nnn
  , gt2   like sorted   table of gs with unique key nnn
  , gt3   like hashed   table of gs with unique key nnn
  , a type i, b type i
  , t1 type i, t2 type i, t3 type i, t4 type i, t5 type i
  , count type i
  , goal  like gs-nnn
  .
parameters power type i default 20.

start-of-selection.
  do power times.
    count = 2 ** sy-index.
    refresh gt1.
    do count times.
      gs-nnn = sy-index.
      append gs to gt1.
    enddo.
    gt3 = gt2 = gt1.
    goal = count - 1.

    get run time field a.
    get run time field a.
    read table gt1 into gs with table key nnn = goal.

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

У вас уже есть учетная запись?

Войти

Обсуждения Количество комментариев3

Комментарий от  

Олег Башкатов

  |  09 декабря 2014, 00:01

К Автору: можно ли указать версию системы, уровень ABAP, ОС и тех.параметры сервера на которых производились замеры?
 
если нет - то нет (в принципе они не так важны).
но если меряем точности, хотелось бы знать чем меряем)))
 
Колонка весьма интересная - спасибо!
 
PS. у меня схожий результат.

Комментарий от  

Оберманн З. Л.

  |  10 декабря 2014, 11:22

К Автору: можно ли указать версию системы, уровень ABAP, ОС и тех.параметры сервера на которых производились замеры?
 
если нет - то нет (в принципе они не так важны).
но если меряем точности, хотелось бы знать чем меряем)))
 
Колонка весьма интересная - спасибо!
 
PS. у меня схожий результат.


 
Злоберманн с радостью заметил интерес, проявленный к данной теме, и предполагает вернуться к этой теме в близком будущем.

Комментарий от  

Иван Рыбкин

  |  29 января 2015, 14:53

Однако, если READ TABLE  будет использоваться несколько раз  ( для данного примера > 8 раз ) то использование SORT +  BINARY SEARCH  будет давать выигрыш в производительности.  Например, в цикле.
Но при единичном READ TABLE , действительно быстрее без сортировки. Спасибо !