zlib performance optimizations (#6597)

This commit is contained in:
Lars Hvam 2023-10-31 06:31:39 +01:00 committed by GitHub
parent b3c35f3e7a
commit 9cb286004d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 43 deletions

View File

@ -54,7 +54,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_ZLIB IMPLEMENTATION.
CLASS zcl_abapgit_zlib IMPLEMENTATION.
METHOD copy_out.
@ -118,7 +118,7 @@ CLASS ZCL_ABAPGIT_ZLIB IMPLEMENTATION.
lv_symbol = decode( go_lencode ).
IF lv_symbol < 256.
lv_x = zcl_abapgit_zlib_convert=>int_to_hex( lv_symbol ).
lv_x = lv_symbol.
CONCATENATE gv_out lv_x INTO gv_out IN BYTE MODE.
ELSEIF lv_symbol = 256.
EXIT.

View File

@ -16,12 +16,8 @@ CLASS zcl_abapgit_zlib_convert DEFINITION
RETURNING
VALUE(rv_int) TYPE i.
CLASS-METHODS int_to_hex
IMPORTING
!iv_int TYPE i
RETURNING
VALUE(rv_hex) TYPE xstring.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
@ -31,17 +27,14 @@ CLASS ZCL_ABAPGIT_ZLIB_CONVERT IMPLEMENTATION.
METHOD bits_to_int.
DATA: lv_c TYPE c LENGTH 1,
lv_bits TYPE string.
DATA lv_i TYPE i.
DATA lv_offset TYPE i.
lv_bits = iv_bits.
WHILE NOT lv_bits IS INITIAL.
lv_c = lv_bits.
rv_int = rv_int * 2.
rv_int = rv_int + lv_c.
lv_bits = lv_bits+1.
ENDWHILE.
DO strlen( iv_bits ) TIMES.
lv_i = iv_bits+lv_offset(1).
rv_int = rv_int * 2 + lv_i.
lv_offset = lv_offset + 1.
ENDDO.
ENDMETHOD.
@ -66,15 +59,4 @@ CLASS ZCL_ABAPGIT_ZLIB_CONVERT IMPLEMENTATION.
ENDWHILE.
ENDMETHOD.
METHOD int_to_hex.
DATA: lv_x TYPE x.
lv_x = iv_int.
rv_hex = lv_x.
ENDMETHOD.
ENDCLASS.

View File

@ -10,8 +10,7 @@ CLASS ltcl_test DEFINITION FOR TESTING
METHODS:
setup,
bits_to_int FOR TESTING,
hex_to_bits FOR TESTING,
int_to_hex FOR TESTING.
hex_to_bits FOR TESTING.
ENDCLASS.
@ -46,16 +45,4 @@ CLASS ltcl_test IMPLEMENTATION.
ENDMETHOD.
METHOD int_to_hex.
DATA: lv_hex TYPE xstring.
lv_hex = mo_cut->int_to_hex( 64 ).
cl_abap_unit_assert=>assert_equals(
act = lv_hex
exp = '40' ).
ENDMETHOD.
ENDCLASS.