这里的大 O 表示法是什么,我该如何弄清楚?
What is the big O notation here and how do I figure it out?
这个数组中有 1805 个元素。我循环遍历每一个并输出 ID 并销毁追随者。
我如何在这里找到大 O 符号?
更好更快的选择是使用 followers.destroy_all 吗?
followers.each { |f| puts f.id; f.destroy! };
当您查看 destroy_all
的源代码时,您会发现它基本上与您的示例相同。它遍历关系中的所有记录并在每个记录上调用 destroy
。我希望它仍然比您的版本快一点,因为调用 puts
不是免费的。但是两个版本都是O(n)
如果可能,您可能希望使用 delete_all
,它不会将所有记录加载到内存中,也不会在每个元素上调用 destroy
。相反,它会删除与单个 SQL 查询相关的所有记录,这使得该方法比 destroy_all
快得多。但当然 delete_all
不会触发回调,因此可能对您不起作用。
这个数组中有 1805 个元素。我循环遍历每一个并输出 ID 并销毁追随者。
我如何在这里找到大 O 符号?
更好更快的选择是使用 followers.destroy_all 吗?
followers.each { |f| puts f.id; f.destroy! };
当您查看 destroy_all
的源代码时,您会发现它基本上与您的示例相同。它遍历关系中的所有记录并在每个记录上调用 destroy
。我希望它仍然比您的版本快一点,因为调用 puts
不是免费的。但是两个版本都是O(n)
如果可能,您可能希望使用 delete_all
,它不会将所有记录加载到内存中,也不会在每个元素上调用 destroy
。相反,它会删除与单个 SQL 查询相关的所有记录,这使得该方法比 destroy_all
快得多。但当然 delete_all
不会触发回调,因此可能对您不起作用。