Hi,
It seems that Array#insert bogs down quite heavily
under heavy iterations. I don't know if this is
avoidable or not, but I thought I would at least ask
about it:
MAX = 30000 # Also 60000 and 100000 - see below
Benchmark.bm(30) do |x|
x.report("Array#insert(2)"){
array = [1,2,3,4]
MAX.times{ array.insert(2, "a", "b") }
}
# Test the -1 index specifically, since all it does
is append
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
Things seem reasonable until around 50,000 iterations,
then it starts to get worse fast (at least, on my
system).
30,000 iterations:
user system total
real
Array#insert(2) 4.203000 0.000000 4.203000 (
4.438000)
Array#insert(-1) 1.594000 0.015000 1.609000 (
1.672000)
Array#insert(-2) 1.172000 0.000000 1.172000 (
1.297000)
60,000 iterations:
user system total
real
Array#insert(2) 15.141000 0.000000 15.141000
(15.969000)
Array#insert(-1) 4.687000 0.000000 4.687000 (
4.906000)
Array#insert(-2) 4.532000 0.000000 4.532000 (
4.859000)
100,000 iterations:
user system total
real
Array#insert(2) 61.203000 0.015000 61.218000 (
67.922000)
Array#insert(-1) 12.875000 0.094000 12.969000 (
14.328000)
Array#insert(-2) 8.454000 0.109000 8.563000 (
9.469000)
Roughly the same with 1.8.2, 1.8.3 and 1.8.4.
Nature of the beast or something that can be improved?
Regards,
Dan
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com