Меню

Заметки старого АБАПника 008. Производительность индексного доступа к стандартной таблице

Производительность индексного доступа к стандартной таблице.

Широко распространено представление о том, что время индексного доступа к стандартной таблице не зависит от размера этой внутренней таблицы. Проницательные АБАПеры усомнились в истинности этой гипотезы. Так что проверим.


* 008.Index Access to a Stnadard Table (1000 tests)
 REPORT  ZQK008.
 selection-screen comment /1(80) t_worn.
 selection-screen begin of line.
 selection-screen comment 1(24)  t_power.
 parameters       p_power type i default 8.
 selection-screen end of line.
 data
 : gp_rpt  type i value 1000           " test number
 , begin     of gs                     " hashed table line
 ,   nnn   type n length 12
 , end       of gs
 , gt      like standard table of gs with default key
 , begin     of gs_stat                " statistics line
 ,   no    type int2
 ,   cnt   type int4
 ,   rls   type standard table of i    " realisation table
 , end       of gs_stat
 , gt_stat like standard table of gs_stat with key no
 , gp_cnt  type int4                   " hashed table size
 , gp_trg  type i
 , a type i, b type i, t type i
 , list_header type string
 .
 field-symbols <gs> like gs.
 start-of-selection.
 do gp_rpt times.                 " 1000 tests
   do p_power times.              " Each test
     gp_cnt = 2 ** sy-index.
     gp_trg = gp_cnt - 1.
     free gt.
     do gp_cnt times.
       add 1 to gs-nnn.
       insert gs into table gt.
     enddo.
     read table gt assigning <gs> index gp_trg.
     read table gt assigning <gs> index 1.
     get run time field a.
     read table gt assigning <gs> index gp_trg.
     get run time field b.
     t = b - a.                   " Result
     perform result_collection.
   enddo.                         " End of test
 enddo.                           " End of 1000 tests
 perform result_processing.
 uline.

 write                            " Legend
   : / 'Count    - Hashed table size = line count'
   , / 'Avg      - Average'
   , / 'rMS      - Root mean square '
   , / 'for Gauss  quartile = 0.6745 * rMS'
   , / '           decile   = 1.282  * rMS'
   , / '           centile  = 2.326  * rMS'
   , / 'Quantiles here:'
   , / 'Min      - Minimal value = low millile (not represantive, 1000 tests)'
   , / 'q01      - Low centile'
   , / 'q10      - Low decile'
   , / 'q25      - Low quartile'
   , / 'Median   - Median, as you have already guessed (p = 0.5)'
   , / 'q75      - High quartile'
   , / 'q90      - High decile'
   , / 'q99      - High centile'
   , / 'Max      - Maximal value = high millile (not represantive, 1000 tests)'
   , / 'Result  of', gp_rpt color col_group, 'tests'

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

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

Войти

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

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

Олег Точенюк

  |  18 июня 2015, 00:01

Ну т.е. протестировали по большому счету скорость работы системного менеджера памяти.

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

Виталий Глущенко

  |  23 июня 2015, 22:50

Прошу прощения, но статья не выдерживает никакой критики.
Вот несколько стандартных вопросов, который возникают после прочтения:
1) Скажите, что в итоге вы доказали?
2) Не смущает, что при Count = 2 Med = 4, при Count = 4 Med = 3, т.е. Med(2) > Med(4) и похожая ситуация далее Count = 524 288 Med = 7, при Count = 1 048 576 Med = 6, т.е. Med(524 288) > Med(1 048 576)? Может ли подобная ситуация повториться на еще больших размерах таблицы?
3) Учитывались ли другие факторы влияющие на производительность программы и сервера приложений? Какие?
4) Как долго по времени продолжался тест? Достаточно ли этого времени для получения адекватных результатов?
5) Какие характеристики сервера приложений и насколько он был загружен в момент проведения теста.
 
Поймите меня правильно. Комментарий пишу не для того, чтобы показать какой я "молодец", что придумал эти вопросы, а вы "плохой", что их не учли. Пишу только для того, чтобы вы учли эти и возможно некоторые другие вопросы при написании и редактировании ваших статей на тему производительности.