C 超短字串比較

2021-06-28 09:51:40 字數 1419 閱讀 8585

最近這幾天的工作中用到了

c++字串比較。在一次執行中需要做海量的字串相等的比較。而且字串都是

3-5位元組長度的字串,在這裡在占用了太多的

cpu資源。

如何快速比較短字串,這裡也是有方法的。(學習了nginx字串比較)

首先思路轉化,字串比較在

cpu指令中是逐字節比較,比如有

」abc」

和「abd」

這兩個字串做是否相同的比較。需要執行三次一位元組的比較指令。而

4(8)

位元組整數型別的比較則只需要一次

cpu指令就可以完成。

我們需要把

3位元組的字串轉換成

4位元組的整型做比較就會提高比較速率。

如何做轉換呢?可以利用c語言的強制型別轉換命令讓計算機幫我們完成轉換任務。好了廢話不多說了,對於程式設計師還是直接上**看的清晰。

main.cpp

#include #include using namespace std;

int main(int argc, char **argv)

編譯g++ -o main main.cpp 執行

./main

3158066

3158066 相等

相等 測試

#include #include using namespace std;

int main(int argc, char **argv)

return 0;

}

系統環境

ubuntu 14.04

intel(r) core(tm) i7-2670qm cpu @ 2.20ghz

intel(r) core(tm) i7-2670qm cpu @ 2.20ghz

intel(r) core(tm) i7-2670qm cpu @ 2.20ghz

intel(r) core(tm) i7-2670qm cpu @ 2.20ghz

intel(r) core(tm) i7-2670qm cpu @ 2.20ghz

intel(r) core(tm) i7-2670qm cpu @ 2.20ghz

intel(r) core(tm) i7-2670qm cpu @ 2.20ghz

intel(r) core(tm) i7-2670qm cpu @ 2.20ghz

time ./main

real

0m3.328s

user

0m3.328s

sys0m0.000s

time ./main

real

0m22.513s

user

0m22.536s

sys0m0.000s

C 字串比較

1,str1.equals str2 2,int result string.compare str1,str2 int result string.compare str1,str2 true 忽略大小寫比較 3 在某些語言中,可以利用 來直接比較字串,而在 c 中,只能用 來比較兩個字串是否相等...

C 比較字串

net framework 提供多個方法來比較字串的值。下表列出並描述了這些值比較方法。方法名使用string.compare 比較兩個字串的值。返回整數值。string.compareordinal 比較兩個字串而不考慮本地區域性。返回整數值。string.compareto 將當前字串物件與另乙...

C 字串的比較

net framework 提供多個方法來比較字串的值。下表列出並描述了這些值比較方法。方法名使用 string.compare 比較兩個字串的值。返回整數值。string.compareordinal 比較兩個字串而不考慮本地區域性。返回整數值。string.compareto 將當前字串物件與另...