gpt4 book ai didi

ruby - Ruby 中最好的字符串匹配算法和实现?

转载 作者:数据小太阳 更新时间:2023-10-29 08:24:17 25 4
gpt4 key购买 nike

我有这两个字符串 string1string2。检查 string2 是否存在于 string1 中的最佳选择是什么。我如何在 Ruby 中实现。目前我正在使用 Regex 匹配。

最佳答案

1.9.3p194 :016 > Benchmark.measure{ 1_000_000.times{ 'asd'['a'] } }
=> 0.430000 0.000000 0.430000 ( 0.431638)

1.9.3p194 :017 > Benchmark.measure{ 1_000_000.times{ 'asd' =~ /a/ } }
=> 0.420000 0.000000 0.420000 ( 0.415391)

1.9.3p194 :018 > Benchmark.measure{ 1_000_000.times{ 'asd'.include? 'a' } }
=> 0.340000 0.000000 0.340000 ( 0.343843)

令人惊讶的是,count('a') > 0 给了我很好的结果:

1.9.3p194 :031 >   Benchmark.measure{ 10_000_000.times{ 'asd'.count('a') > 0 } }
=> 3.100000 0.000000 3.100000 ( 3.099447)

1.9.3p194 :032 > Benchmark.measure{ 10_000_000.times{ 'asd'.include?('a') } }
=> 3.220000 0.000000 3.220000 ( 3.226521)

但是:

# count('a') > 0
1.9.3p194 :056 > Benchmark.measure{ 10_000_000.times{ 'asdrsguoing93hafehbsefu3nr3wrbibaefiafb3uwfniw4ufnsbei'.count('a') > 0 } }
=> 3.630000 0.000000 3.630000 ( 3.633329)
# include?('a')
1.9.3p194 :057 > Benchmark.measure{ 10_000_000.times{ 'asdrsguoing93hafehbsefu3nr3wrbibaefiafb3uwfniw4ufnsbei'.include?('a') } }
=> 3.220000 0.000000 3.220000 ( 3.224986)
# =~ /a/
1.9.3p194 :058 > Benchmark.measure{ 10_000_000.times{ 'asdrsguoing93hafehbsefu3nr3wrbibaefiafb3uwfniw4ufnsbei' =~ /a/ } }
=> 3.040000 0.000000 3.040000 ( 3.043130)

因此:严格来说性能,您应该考虑字符串的分布(很少是随机的)进行测试。谈到表现力,也许 include? 是最好的选择。

关于ruby - Ruby 中最好的字符串匹配算法和实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11758187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com