ruby酷酷的方法——另一种next

1
2
3
4
5
6
7
irb(main):022:0* 1.next
=> 2
irb(main):023:0> "a".next
=> "b"
irb(main):024:0> "1".next
=> "2"
irb(main):025:0>


性能比较:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
require 'benchmark'
 
n=(1..1000000).to_a
def num_next(first,last)
    while first != last
            first=first.next
    end
     
end
 
 
def num_join(first,last)
        while first != last
              first+=1
        end
end
 
Benchmark.bm do |bm|
    bm.report("each") do
        n.each do |d|
            d
        end
    end
 
    bm.report("next") do
        num_next(1,1000000)
    end
 
    bm.report("  + ") do
        num_join(1,1000000)
    end
end

 

输出:
      user     system      total        real
each  0.219000   0.000000   0.219000 0.218000)
next  0.266000   0.000000   0.266000 0.266000)
  +   0.312000   0.000000   0.312000 0.313000)

 性能还不错,向ruby脱帽致敬!!

posted @   Anleb  阅读(403)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示