Ruby 2.4 的一些新特性 已翻译 100%

本文通过使用Ruby的Benchmark模块,对比了不同正则表达式方法的执行效率,包括Regexp#match?、Regexp#match、Regexp#=~和Regexp#===,结果显示Regexp#match?的性能最佳。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用了 Regexp#match? 的更快的正则表达式
:
require 'benchmark/ips'

Benchmark.ips do |bench|
EMPTY_STRING = ''
WHITESPACE = " \n\t\n "
CONTAINS_TEXT = ' hi '

PATTERN = /\A[[:space:]]*\z/

bench.report('Regexp#match?') do
PATTERN.match?(EMPTY_STRING)
PATTERN.match?(WHITESPACE)
PATTERN.match?(CONTAINS_TEXT)
end

bench.report('Regexp#match') do
PATTERN.match(EMPTY_STRING)
PATTERN.match(WHITESPACE)
PATTERN.match(CONTAINS_TEXT)
end

bench.report('Regexp#=~') do
PATTERN =~ EMPTY_STRING
PATTERN =~ WHITESPACE
PATTERN =~ CONTAINS_TEXT
end

bench.report('Regexp#===') do
PATTERN === EMPTY_STRING
PATTERN === WHITESPACE
PATTERN === CONTAINS_TEXT
end

bench.compare!
end

>> Warming up --------------------------------------

>> Regexp#match? 160.255k i/100ms

>> Regexp#match 44.904k i/100ms

>> Regexp#=~ 71.184k i/100ms

>> Regexp#=== 71.839k i/100ms

>> Calculating -------------------------------------

>> Regexp#match? 2.630M (± 4.0%) i/s - 13.141M in 5.004929s

>> Regexp#match 539.361k (± 3.9%) i/s - 2.694M in 5.002868s

>> Regexp#=~ 859.713k (± 4.2%) i/s - 4.342M in 5.060080s

>> Regexp#=== 872.217k (± 3.5%) i/s - 4.382M in 5.030612s

>>

>> Comparison:

>> Regexp#match?: 2630002.5 i/s

>> Regexp#===: 872217.5 i/s - 3.02x slower

>> Regexp#=~: 859713.0 i/s - 3.06x slower

>> Regexp#match: 539361.3 i/s - 4.88x slower

gxgssww3.n77888.com,ww12.n77888.com,ww4.n77888.com,ww4.n77888.comgxgss

gxgadpww2.n77888.com/1.gif,ww2.n77888.com/2.gif,ww2.n77888.com/3.gifgxgadp
gxgaduwww.baidu.com,www.163.com,www.jd.comgxgadu

转载于:https://blog.51cto.com/13962066/2299560

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值