作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
这样做有什么好处(如果有的话):
books.sort! { |firstBook, secondBook| secondBook <=> firstBook }
对比:
books.sort!.reverse!
第二个选项看起来更简洁、更容易理解..
编辑:我想这可能是一个问题,除了 1 对 1 排序之外,<=> 运算符还有哪些其他用途?
最佳答案
事实证明,我最初对性能问题的回答很大程度上是基于一个错误的假设:sort.reverse
没有固有的性能影响,因为 sort
没有 block 似乎比 sort
with 一个 block 快得多,以至于它抵消了第二次 reverse
调用的成本,这是可以忽略不计的。
但是,我的回答的要点仍然有效:您应该选择第二行,因为它更具可读性,并且担心在发现性能问题时找出哪个选项更快。
原回答如下:
第二种选择更昂贵。它按升序对所有内容进行排序,然后反转数组,这是两个不同的过程,而第一个选项会立即按降序生成数组。
也就是说,第二种选择是我更喜欢的。通常,宁愿生成可读、可维护的代码,也不愿过早地优化性能。
显然您必须问自己:“这段代码每秒运行多次吗?”或“此代码在应用程序的生命周期内运行一次吗?”并且您的优先级会相应改变,但一般来说,可维护性胜过性能。
使用第二个选项,直到您可以证明它是一个性能瓶颈。
关于ruby - 使用 <=> 而不仅仅是排序和反转有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117907/
我是一名优秀的程序员,十分优秀!