понедельник, 25 ноября 2013 г.

Замеры времени при выполнении трансформации

Пришлось тут доказывать что код написанный мной оптимален, а нанятый человек - ошибся. + осложнение - код в трансформации.
На скорую руку родился вот такой код.

DATA:
  l_t0 type i,
  l_t1 type i,
  l_t2 type i,
  l_t3 type i,
  l_t4 type i,
  l_t5 type string,
  l_t6 type string.

 GET RUN TIME FIELD l_t0. "Get time for transformation

 GET RUN TIME FIELD l_t1. "Get time for block
"
" some code
"
 GET RUN TIME FIELD l_t2. l_t3 = ( l_t2 - l_t1 ).
 l_t4 = l_t3 / 1000000.
 monitor_rec-msgid = 'RSRMON'.
 monitor_rec-msgty = 'W'.
 monitor_rec-msgno = '000'.
 monitor_rec-msgv1 = 'start '.   "block name
 l_t5 = l_t3.
 l_t6 = l_t4.
 CONCATENATE l_t6 '( ' l_t5 ' )' INTO monitor_rec-msgv2.
 DESCRIBE TABLE RESULT_PACKAGE LINES l_t3.
 l_t5 = l_t3.
 l_t6 = l_t4.
 CONCATENATE ' RESULT_PACKAGE - ( ' l_t5 ' )' INTO monitor_rec-msgv3.
 monitor_rec-msgv4 = SPACE.
 append monitor_rec to MONITOR.

 И так "цать раз + в конце вычисляем общее время

l_t3 = ( l_t2 - l_t0 ).
l_t4 = l_t3 / 1000000.
monitor_rec-msgid = 'RSRMON'.
monitor_rec-msgty = 'W'.
monitor_rec-msgno = '000'.
monitor_rec-msgv1 = 'TOTAL'.
l_t5 = l_t3.
l_t6 = l_t4.
CONCATENATE l_t6 '( ' l_t5 ' )' INTO monitor_rec-msgv2.
monitor_rec-msgv3 = SPACE.
monitor_rec-msgv4 = SPACE.
append monitor_rec to MONITOR.

Виртуальный куб, дайте два

Понадобилось тут в виде эксперимента протестировать изменения логики виртуального куба. Решил сделать обработку в одном модуле, но привязать её к имени куба и соответственно сделать второй мультик но на том же ФМ. И все это хозяйство в один мультик было положено. Система падала в дамп при попытке выполнить любой отчет на этом мультике. Пришлось дублировать модуль, тогда все заработало нормально.