1
A
回答
10
如果您确保串通过特定的编译器属性的8字节边界上对齐,你可以这样做:
uint64_t a = *((uint64_t *) "STRING1 ");
uint64_t b = *((uint64_t *) "STR2 ");
然后a == b
应该产生于一个单一的64位指令。或者,如果它们只是不变的不变字符串(存储在进程的只读区域中),则可以继续比较指针本身。它仍然是一个可靠的测试,因为一个字符串文字,在当前转换单元中出现两次应该指的是相同的内存:
/* fails because the two strings are stored at different locations */
"STRING1 " == "STR2 "
/* should succeed, even the silliest compiler should merge both literals */
"STRING1 " == "STRING1 "
4
如果字符串固定长度相等,那么memcmp
是一个好方法。
相关问题
- 1. 最快捷的方法来比较两个字符串数组
- 2. 比较字符串的长度相等
- 3. 字符串比较比字符串长度更快吗?
- 4. 比较字符串长度
- 5. 比较字符串长度
- 6. 无法比较PHP中的两个相同的字符串?
- 7. 如何比较两个不同长度的字符串以找到相同的子字符串
- 8. 最好的方法来比较2个相似的字符串?
- 9. 在intern()方法后比较两个相等的字符串
- 10. 比较C中两个字符串的最快方法是什么?
- 11. 比较两个字符串的最有效方法是什么?
- 12. PHP - 为什么比较两个整个长(相同)的字符串比比较每个字符的第一个字符要快得多?
- 13. 将两个字符串的长度与Ruby进行比较
- 14. 比较两个字符串并返回最相似的一个
- 15. 最快的方法来比较/设置字符串
- 16. 比较字符串与大阵列的最快方法
- 17. 什么是比较字符串开头的最快方法?
- 18. 比较相同长度但不同水平的两个因子
- 19. 将两个字符串转换为相同的字节长度
- 20. 给定两个字符串长度,测试两个字符串是否相同
- 21. 关系运算符(不同长度)的字符串比较
- 22. 同时比较两个字符串
- 23. JavaScript比较具有相同值的两个字符串失败
- 24. Python比较两个相同的字符串返回与假
- 25. 比较两个字符串(网址)为相同的域
- 26. 最佳(HEX)字符串比较方法
- 27. 比较两个arrayList并获得最长匹配字符串
- 28. 比较长字符串并返回相似度和百分比
- 29. 字符串的长度比字符串的长度长
- 30. 有效比较相同长度的两个BitArrays
介绍介绍轮廓......如果字符串比较是不是在你的应用程序中的瓶颈(即如果你没有在紧密的循环中比较数千个字符串),不要盲目过度优化。 –
'std :: pair p = std :: mismatch(str1,str1 + 8,str2);如果(p.first == str1 + 8){...}'。对于char *,C++库**应该调用memcmp。 –
moshbear
@ Kerrek的建议有一个科学原因:[Amdahl's law](http://www.cs.iastate.edu/~prabhu/Tutorial/CACHE/amdahl.html)。简而言之:如果你需要优化,首先找到最常见的情况,然后优化它,然后 –