Project

General

Profile

Actions

Misc #18834

closed

Significant change in loop speeds (regressing using while loop on ARM chips)

Added by tarellel (Brandon Hicks) almost 2 years ago. Updated over 1 year ago.

Status:
Feedback
Assignee:
-
[ruby-core:108967]

Description

I was benchmarking some code and one of the benchmarks I came across was fast-ruby's while vs each_with_index. I ran these test multiple times and got very similar results.

Both of these machines benchmarks were ran with ruby v3.1.2.

Intel - i9/32gb Ram (I also ran this on a linux VM or similar specs and got similar results)
ARM - AppleSilicon/32gb Ram

The reason I bring this up, is because most people develop on a Mac and now more than likely on AppleSilicon. But once deployed on a VM or container it's more than likely running on an intel based architecture. I'm kind of curious why there is such a massive change in the loop speeds between the two architectures such as while being 31% slower on ARM but also at the same time each_with_index is 42% faster.

If someone develops their code on their ARM devises and using the faster of the methods. Once deployed it may run significantly slower than expected because of the architecture speed differences.

# Intel
Warming up --------------------------------------
          While Loop    37.108k i/100ms
     each_with_index    15.900k i/100ms
Calculating -------------------------------------
          While Loop    390.930k (± 2.3%) i/s -      1.967M in   5.033609s
     each_with_index    158.754k (± 1.7%) i/s -    795.000k in   5.009286s

Comparison:
          While Loop:   390930.1 i/s
     each_with_index:   158753.7 i/s - 2.46x  (± 0.00) slower

# ARM
Warming up --------------------------------------
          While Loop    26.594k i/100ms
     each_with_index    27.316k i/100ms
Calculating -------------------------------------
          While Loop    268.372k (± 0.1%) i/s -      1.356M in   5.053798s
     each_with_index    273.584k (± 0.2%) i/s -      1.393M in   5.092110s

Comparison:
     each_with_index:   273584.4 i/s
          While Loop:   268371.7 i/s - 1.02x  (± 0.00) slower

Files

arm_rbconfig.rb (11 KB) arm_rbconfig.rb tarellel (Brandon Hicks), 06/29/2022 12:59 AM
intel_rbconfig.rb (10.9 KB) intel_rbconfig.rb tarellel (Brandon Hicks), 06/29/2022 12:59 AM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0