Als we hier dieper op ingaan, lijkt het erop dat het de verwijdering is uit de comments
array die erg lang duurt. Records die worden verwijderd, worden vervolgens verwijderd uit de array hier
.
Als we dit met een grote array simuleren, krijgen we hetzelfde trage gedrag:
1.9.3-p194 :001 > require 'benchmark'; require 'ostruct'
=> true
1.9.3-p194 :002 > i = 0; a = []
=> []
1.9.3-p194 :003 > 35_000.times { i+=1; a << OpenStruct.new(value: i) }
=> 35000
1.9.3-p194 :004 > puts Benchmark.measure { a.each { |i| a.delete(i) } }
623.560000 0.820000 624.380000 (625.244664)
ActiveRecord kan waarschijnlijk worden geoptimaliseerd om een Array#clear
. te doen in het geval van een destroy_all
...