既然经常和固定的字符串比力,那是不是能节约掉如许的strcmp调用呢?代码写出来大致是如许的:
我们可以利用hash函数盘算出的hash值,先盘算出那个固定的字符串的hash值存下来,然后再盘算与它比力的字符串的hash值;
现在strcmp就转换成两个hash值的比力了,不相同的hash值一定意味着字符串不同,可以直接返回false;
相同hash值的字符串有可能是因为hash冲突,所以还需要回退到调用strcmp;
hash值的比力自己就是一次整数的比力,非常快,比函数调用快得多,因此字符串不相称的情况可以得到优化;
系统里大多数时间和固定字符串比力的效果都是不相称,因此能被优化覆盖的情况占大多数。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |