此陣列中有 1805 個元素。我正在遍歷它們中的每一個并輸出 ID 并銷毀追隨者。
我如何在這里找到大 O 符號?
更好更快的選擇是使用followers.destroy_all嗎?
followers.each { |f| puts f.id; f.destroy! };
uj5u.com熱心網友回復:
當您查看destroy_all
then 的源代碼時,您會注意到它與您的示例基本相同。它遍歷關系中的所有記錄并呼叫destroy
它們中的每一個。我希望它仍然比您的版本快一點,因為呼叫puts
不是免費的。但是兩個版本都是O(n)
如果可能的話,您可能想要使用delete_all
它不會將所有記錄加載到記憶體中并且不會呼叫destroy
每個元素。相反,它使用一個 SQL 查詢洗掉關系中的所有記錄,這使得這種方法比destroy_all
. 但當然delete_all
不會觸發回呼,因此可能不適合您。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/456260.html