日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BF,KMP,BM三种字符串匹配算法性能比较

發(fā)布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BF,KMP,BM三种字符串匹配算法性能比较 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

三種最基本的字符串匹配算法是BF,KMP以及BM,BF算法是最簡單直接的匹配算法,就是逐個比較,一旦匹配不上,就往后移動一位,繼續(xù)比較,所以比較次數(shù)很都。

關于KMP和BM的詳細介紹可以參考下面的兩個link,是講得比較好的。

KMP

http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html

BM

http://www.ruanyifeng.com/blog/2013/05/boyer-moore_string_search_algorithm.html

理論上,BM具有最好的性能,因為比較的次數(shù)最好,其次是KMP,最差的應該是BF。

今天對這三種算法做了一個簡單的測試,測試程序運行在Windows 7 x64位系統(tǒng)上,四核CPU,32G內(nèi)存,測試程序為x64。

說明,只測試在目標字符串中找不到要搜索的字符串,以便能夠遍歷完所有字符串。

測試1,在1億個字符串(100M)搜索一個長度為20字節(jié)字符串,結(jié)果如下:

BF spent time is 171(ms)
KMP spent time is 422(ms)
BM spent time is 15(ms)

最快的是BM算法,花的時間也最少(15ms).

測試2, 在10億個字符串中(1G)中搜索一個長度為20字節(jié)的字符串,結(jié)果如下:

BF spent time is 1670(ms)
KMP spent time is 4321(ms)
BM spent time is 203(ms)

結(jié)果和測試一基本一致。

通過這兩次測試,很奇怪的是KMP算法居然比BF算法花的時間還多,說明KMP雖然理論上有很好的性能,但實際上很難有所作為,大多數(shù)情況下還不如BF算法。但是BM算法確實在大多數(shù)情況下都具有很好的性能體現(xiàn)。






總結(jié)

以上是生活随笔為你收集整理的BF,KMP,BM三种字符串匹配算法性能比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。