Skip to content
  • AGSaidi's avatar
    511b55bc
    Enable arm64 optimizations that exist for power/x86 (#3393) · 511b55bc
    AGSaidi authored
    * Enable unaligned accesses on arm64
    
    64-bit Arm platforms support unaligned accesses.
    
    Running the string benchmarks this change improves performance
    by an average of 1.04x, min .96x, max 1.21x, median 1.01x
    
    * arm64 enable gc optimizations
    
    Similar to x86 and powerpc optimizations.
    
    |       |compare-ruby|built-ruby|
    |:------|-----------:|---------:|
    |hash1  |       0.225|     0.237|
    |       |           -|     1.05x|
    |hash2  |       0.110|     0.110|
    |       |       1.00x|         -|
    
    * vm_exec.c: improve performance for arm64
    
    |                               |compare-ruby|built-ruby|
    |:------------------------------|-----------:|---------:|
    |vm_array                       |     26.501M|   27.959M|
    |                               |           -|     1.06x|
    |vm_attr_ivar                   |     21.606M|   31.429M|
    |                               |           -|     1.45x|
    |vm_attr_ivar_set               |     21.178M|   26.113M|
    |                               |           -|     1.23x|
    |vm_backtrace                   |       6.621|     6.668|
    |                               |           -|     1.01x|
    |vm_bigarray                    |     26.205M|   29.958M|
    |                               |           -|     1.14x|
    |vm_bighash                     |    504.155k|  479.306k|
    |                               |       1.05x|         -|
    |vm_block                       |     16.692M|   21.315M|
    |                               |           -|     1.28x|
    |block_handler_type_iseq        |       5.083|     7.004|
    |                               |           -|     1.38x|
    511b55bc
    Enable arm64 optimizations that exist for power/x86 (#3393)
    AGSaidi authored
    * Enable unaligned accesses on arm64
    
    64-bit Arm platforms support unaligned accesses.
    
    Running the string benchmarks this change improves performance
    by an average of 1.04x, min .96x, max 1.21x, median 1.01x
    
    * arm64 enable gc optimizations
    
    Similar to x86 and powerpc optimizations.
    
    |       |compare-ruby|built-ruby|
    |:------|-----------:|---------:|
    |hash1  |       0.225|     0.237|
    |       |           -|     1.05x|
    |hash2  |       0.110|     0.110|
    |       |       1.00x|         -|
    
    * vm_exec.c: improve performance for arm64
    
    |                               |compare-ruby|built-ruby|
    |:------------------------------|-----------:|---------:|
    |vm_array                       |     26.501M|   27.959M|
    |                               |           -|     1.06x|
    |vm_attr_ivar                   |     21.606M|   31.429M|
    |                               |           -|     1.45x|
    |vm_attr_ivar_set               |     21.178M|   26.113M|
    |                               |           -|     1.23x|
    |vm_backtrace                   |       6.621|     6.668|
    |                               |           -|     1.01x|
    |vm_bigarray                    |     26.205M|   29.958M|
    |                               |           -|     1.14x|
    |vm_bighash                     |    504.155k|  479.306k|
    |                               |       1.05x|         -|
    |vm_block                       |     16.692M|   21.315M|
    |                               |           -|     1.28x|
    |block_handler_type_iseq        |       5.083|     7.004|
    |                               |           -|     1.38x|
Loading