ruby – 使用<=>而不仅仅是排序和反转是否有好处?
发布时间:2020-12-17 01:47:44 所属栏目:百科 来源:网络整理
导读:这样做有什么好处(如果有的话): books.sort! {| firstBook,secondBook | secondBook = firstBook} 与: books.sort!.reverse! 第二个选项似乎更清晰,更容易理解.. 编辑:我想这可能是一个问题, =的其他用途是什么?除1对1排序以外的操作符? 解决方法 关
这样做有什么好处(如果有的话):
books.sort! {| firstBook,secondBook | secondBook< => firstBook} 与: books.sort!.reverse! 第二个选项似乎更清晰,更容易理解.. 编辑:我想这可能是一个问题,< =>的其他用途是什么?除1对1排序以外的操作符? 解决方法
关于性能问题的初步答案已经证明主要基于一个不正确的假设:sort.reverse没有固有的性能影响,因为没有块的排序似乎比使用块排序更快,所以它抵消了第二次反向呼叫的成本,可以忽略不计.
但是,我的答案的要点仍然有效:您应该选择第二行,因为它更具可读性,并且在您确定性能问题时担心找出哪个是更快的选项. 原始答案如下: 第二种选择更昂贵.它按升序对所有内容进行排序,然后反转数组,两个不同的进程,而第一个选项立即按降序生成数组. 也就是说,第二种选择是我更喜欢的选择.通常,更喜欢生成可读的,可维护的代码而不是过早地优化性能. 显然你必须问自己:“这段代码每秒运行多少次?”或者“此代码在应用程序的生命周期内运行一次吗?”并且您的优先级会相应地发生变化,但通常,可维护性会超过性能. 使用第二个选项,直到您可以证明它是性能瓶颈. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- C#中的Volatile和Thread.MemoryBarrier
- swift – 多个让一个守卫声明和一个let一样吗?
- Oracle密码过期ORA-28001: the password has expired解决办
- c# – 使用configSource转换包含的配置文件
- c – 只接受信件
- 测试先行的敏捷方法
- c# – 如何将文本文件大纲列表转换为递归的对象集合?
- kendo-ui – 使用Aggregate进行Kendo UI网格分组:使用Grou
- 一个三年以上老项目加入React Native 模块的过程
- winforms – TableLayoutPanel的行/列着色(vs2008,winform)