为什么代码减少 程序却变慢了

superuserid
用户名 2012-09-10 字数 464

用一个hash函数

inline int h1(const char *action) {

int a = action[0]-'a';

if(a<0 || a>26)

return 0;

const char *p = action+mi[a];

//      const char *p = action;

unsigned short h = mi[a];

//      unsigned short h = 0;

while (*p)

h = ((h << 2) + h) ^ *p++;

return h;

}

hash大概10000000个字符串  函数中第二行的代码 if(***)是永远走不到的   为什么我把这两行代码注释了 程序反倒变慢了

CSArch 计算机体系结构
5 个回复
liuanhuaming
凌波微步 2012-09-10

你确定if永远为假?

【 在 superuserid 的大作中提到: 】

: 用一个hash函数

: inline int h1(const char *action) {

:         int a = action[0]-'a';

: ...................

superuserid
用户名 2012-09-10

我确定  以及肯定

【 在 liuanhuaming (凌波微步) 的大作中提到: 】

: 你确定if永远为假?

MaLing
uranus 2012-09-11

你可真逗,变成汇编看看吧 :)

【 在 superuserid (用户名) 的大作中提到: 】

: 我确定  以及肯定

aleffy
aleffy 2012-09-18
yswzing
yswzing 2012-09-29

慢了多少?