Patches: Browse | Submit New | Admin

[#2769] Patch for Array#insert

Date:
2005-11-03 04:30
Priority:
3
Submitted By:
Daniel Berger (djberg96)
Assigned To:
Yukihiro Matsumoto (matz)
Category:
Language / Runtime / Core Libraries
State:
Open
Summary:
Patch for Array#insert

Detailed description
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

Add A Comment: Notepad

Please login


Followup

Message
Date: 2007-08-27 06:11
Sender: Shyouhei Urabe

Oops, I was not aware of this being assigned to me.
It's actually matz's part.

Attached Files:

Name Description Download
array.diff Patch for Array#insert (array.c) Download

Changes:

Field Old Value Date By
assigned_toshyouhei2007-08-27 06:11shyouhei
assigned_tonone2007-06-13 06:28zenspider
category_idMisc / Other Standard Library2007-05-30 04:21zenspider
category_idNone2007-05-30 03:50zenspider
File Added349: array.diff2005-11-03 04:30djberg96