#424: performance regression from ruby 1.8 and 1.9 -------------------------------------+-------------------------------------- Reporter: jordan.breeding@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: -------------------------------------+-------------------------------------- Comment(by jordan.breeding@…): Alright, after taking another look I don't know that this is the only place where it is slower, but String is definitely causing some of the problem. I add a method to String to swap characters inside the String, this seems to be consistently slower in MacRuby. {{{ #!/usr/bin/eval ruby class String def swap(first, second) self.dup.swap!(first, second) end def swap!(first, second) temp_store = self[first] self[first] = self[second] self[second] = temp_store return self end end # first test puts puts("Test 001 -- String character swap, 2500000 times") $staticString = "asdfghjkl;123456789" $firstTime = 0.0 2500000.times { randOne = rand($staticString.length) randTwo = rand($staticString.length) innerTime = Time.new newString = $staticString.swap(randOne, randTwo) $firstTime += Time.new - innerTime } puts("Test 001: %.4f seconds" % [$firstTime]) puts }}} {{{ 63 jordan@thetourist ~/Tests/performance > ruby ./small_performance_test.rb Test 001 -- String character swap, 2500000 times Test 001: 7.8250 seconds 64 jordan@thetourist ~/Tests/performance > /opt/homebrew/bin/ruby ./small_performance_test.rb Test 001 -- String character swap, 2500000 times Test 001: 7.3780 seconds 65 jordan@thetourist ~/Tests/performance > macruby ./small_performance_test.rb Test 001 -- String character swap, 2500000 times Test 001: 23.7841 seconds }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/424#comment:11> MacRuby <http://macruby.org/>