Patches item #2769, was opened at 2005-11-02 21:30 You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1700&aid=2769&group_id=426 Category: None Group: None Status: Open Resolution: None Priority: 3 Submitted By: Daniel Berger (djberg96) Assigned to: Nobody (None) Summary: Patch for Array#insert Initial Comment: Hi all, I've attached a patch for Array#insert (array.c). This gets rid of the manual argc counting, and improves performance when dealing with negative indexes. I handled a -1 index specially, since all it does is append. Some benchmarks: # Without patch djberge@linux:~/programming/ruby> ruby insertbench.rb user system total real Array#insert(2) 2.810000 0.010000 2.820000 ( 2.844887) Array#insert(-1) 1.730000 0.020000 1.750000 ( 1.792738) Array#insert(-2) 1.600000 0.000000 1.600000 ( 1.632053) # With patch djberge@linux:~/programming/ruby> /opt/local/bin/ruby insertbench.rb user system total real Array#insert(2) 2.800000 0.010000 2.810000 ( 2.840690) Array#insert(-1) 0.790000 0.010000 0.800000 ( 0.818543) Array#insert(-2) 0.950000 0.000000 0.950000 ( 0.969453) # bench_insert.rb require "benchmark" MAX = 30000 Benchmark.bm(30) do |x| x.report("Array#insert(2)"){ array = [1,2,3,4] MAX.times{ array.insert(2, "a", "b") } } x.report("Array#insert(-1)"){ array = [1,2,3,4] MAX.times{ array.insert(-1, "a", "b") } } x.report("Array#insert(-2)"){ array = [1,2,3,4] MAX.times{ array.insert(-2, "a", "b") } } end ---------------------------------------------------------------------- You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1700&aid=2769&group_id=426