From: "alanwu (Alan Wu)" Date: 2022-06-16T22:50:00+00:00 Subject: [ruby-core:108969] [Ruby master Misc#18834] Significant change in loop speeds (regressing using while loop on ARM chips) Issue #18834 has been updated by alanwu (Alan Wu). Interesting! Can you post the output of: $ ruby -ve 'pp RbConfig::CONFIG, RubyVM::OPTS' For your ARM build of Ruby? I suspect the performance difference could be explained by compiler differences. ---------------------------------------- Misc #18834: Significant change in loop speeds (regressing using while loop on ARM chips) https://bugs.ruby-lang.org/issues/18834#change-98070 * Author: tarellel (Brandon Hicks) * Status: Open * Priority: Normal ---------------------------------------- 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. ``` shell # 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 ``` -- https://bugs.ruby-lang.org/ Unsubscribe: