爲了清楚起見,我只談論空字符串。比較C中兩個字符串的最快方法是什麼?
我熟悉在C中使用strcmp進行字符串比較的標準方法。但我覺得這樣很慢並且效率低下。
我不一定會尋找最簡單的方法,但效率最高。
當前比較方法(strcmp)可以進一步優化,而底層代碼仍然是跨平臺嗎?
如果strcmp無法進一步優化,我可以在沒有strcmp的情況下執行字符串比較的最快方法是什麼?
當前使用情況:
- 確定兩個任意的字符串匹配
- 字符串將不超過4096個字節,也不是在尺寸上小於1個字節
- 字符串被分配/解除分配的比較內相同的代碼/庫
- 一旦比較完成,我將字符串傳遞給另一個需要格式的庫,以標準的空終止格式
- 系統內存裏mits不是一個巨大的問題,但我將有數以萬計的這樣的字符串排隊進行比較
- 字符串可能包含高ascii字符集或UTF-8字符,但對於我的目的,我只需要知道它們是否匹配,內容是不是一個問題
- 應用在x86上運行,但也應該在x64上運行
參考當前的strcmp()實現:
編輯:明確瞭解決方案不需要是STRCMP的修改。
編輯2:增加了這個用例的具體例子。
你爲什麼認爲'strcmp()'沒有被充分優化? – e0k
我很確定'strcmp'已經針對你的任何平臺進行了優化。 –
我沒有明確的答案,但我懷疑它。你需要查看兩個字符串的每一個字符,以便比較它們,我沒有看到任何方式。我敢打賭,strcmp()比「某個人」在下午可以做得更好。 –