Tìm hiểu sâu hơn về vấn đề này, có vẻ như đó là việc xóa các comments
mảng mất rất nhiều thời gian. Các bản ghi bị xóa sau đó sẽ bị xóa khỏi mảng tại đây
.
Mô phỏng điều này với một mảng lớn, chúng tôi nhận được cùng một hành vi chậm:
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 có thể được tối ưu hóa để thực hiện Array#clear
trong trường hợp của một destroy_all
...