REPORT /eutin/performance_field_symbol_vs_reference LINE-SIZE 255. PARAMETERS: loops TYPE int4 DEFAULT 10 OBLIGATORY. DATA: lv_time_before TYPE i, lv_time_after TYPE i, lv_time_runtime_fld TYPE i, lv_time_runtime_fld1 TYPE i, lv_time_runtime_ref TYPE i, lv_time_runtime_ref1 TYPE i, lv_time_runtime_dif TYPE p LENGTH 8 DECIMALS 6. SELECT * FROM sflight INTO TABLE @DATA(lt_sflight) ORDER BY PRIMARY KEY. SELECT * FROM scarr INTO TABLE @DATA(lt_scarr) ORDER BY PRIMARY KEY. SET RUN TIME CLOCK RESOLUTION HIGH. DATA(lv_fld) = 'Error'. CLEAR lv_time_runtime_fld1. DO loops TIMES. GET RUN TIME FIELD lv_time_before. LOOP AT lt_sflight ASSIGNING FIELD-SYMBOL(). READ TABLE lt_scarr ASSIGNING FIELD-SYMBOL() WITH KEY carrid = -carrid BINARY SEARCH. IF sy-subrc EQ 0. lv_fld = 'Okay'. ENDIF. ENDLOOP. GET RUN TIME FIELD lv_time_after. DATA(lv_time_runtime_tmp) = lv_time_after - lv_time_before. IF lv_time_runtime_fld1 IS INITIAL. lv_time_runtime_fld1 = lv_time_runtime_tmp. ENDIF. lv_time_runtime_fld += lv_time_runtime_tmp. ENDDO. DATA(lv_ref) = 'Error'. CLEAR lv_time_runtime_ref1. DO loops TIMES. GET RUN TIME FIELD lv_time_before. LOOP AT lt_sflight REFERENCE INTO DATA(lr_sflight). READ TABLE lt_scarr REFERENCE INTO DATA(lr_scarr) WITH KEY carrid = lr_sflight->carrid BINARY SEARCH. IF sy-subrc EQ 0. lv_ref = 'Okay'. ENDIF. ENDLOOP. GET RUN TIME FIELD lv_time_after. lv_time_runtime_tmp = lv_time_after - lv_time_before. IF lv_time_runtime_ref1 IS INITIAL. lv_time_runtime_ref1 = lv_time_runtime_tmp. ENDIF. lv_time_runtime_ref += lv_time_runtime_tmp. ENDDO. lv_time_runtime_dif = lv_time_runtime_fld / lv_time_runtime_ref. DATA(lv_factor) = |REFERENCE INTO is { lv_time_runtime_dif } times faster than FIELD-SYMBOLS! |. IF lv_time_runtime_fld LT lv_time_runtime_ref. lv_time_runtime_dif = lv_time_runtime_ref / lv_time_runtime_fld. lv_factor = |FIELD-SYMBOLS is { lv_time_runtime_dif } times faster than REFERENCE INTO!|. ENDIF. WRITE: / '1. FIELD-SYMBOLS total: runtime in ms :', lv_time_runtime_fld LEFT-JUSTIFIED, lv_fld, / ' first loop: runtime in ms:', lv_time_runtime_fld1 LEFT-JUSTIFIED, / '2. REFERENCE INTO total runtime in ms :', lv_time_runtime_ref LEFT-JUSTIFIED, lv_ref, / ' first loop runtime in ms:', lv_time_runtime_ref1 LEFT-JUSTIFIED. SKIP 1. WRITE: / |Factor { lv_time_runtime_dif } { lv_factor }|. *--- The End!