有这样一段代码,比较字符串,然后根据key是否相同,给对应变量赋值。
版本1
最常规的写法:
版本2
感觉前面比较第一个字符,就能排除很多无效功,于是做了第二个版本:
版本3
N年前看公司的一个模块,里面用到了multi-character constant的写法(这种写法编译器会报Warning),可以将小于等于4个的字符常量转换成一个整数表示,小端平台,rule不能写成rule,需要反过来,变成elur,这样,multi-character constant当成一个整数后,可以直接整数比较。论上是比调用strcmp调用要高效。
验证一下2亿条数据,执行第一个版本耗时2.3s,执行第二个版本耗时2.0s,第三个版本耗时1.9s,性能稳定:
注:首次执行的时候,数据还不在cache中,导致set1的时间有偏差,看第一条为2671ms,理论上应该在2307ms左右,若先调用set3,set3的第一次为2622ms,而不是1961ms。
可以看出,效果意义并不大,我一天最多才处理2亿条,一天节约0.5s的时间,代码却比较难维护,还是,不要太计较CPU性能,不要太在意细节,不要提前优化。