最近這幾天的工作中用到了
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 將當前字串物件與另...