从lighttpd学到的代码技巧

平时写开脚本,很多时候我们都可以不怎样注意效率,但是看c代码的时候,你会发现,才意思自己真的是一个coder啦

1,单位转换 (根据传入的数返回相应的kb,mb,gb等等)

可能我们直觉来想就会这样做啦

if(num>1024*1024*1024){
       return num/1024/1024/1024+"gb"
}elseif(num>1024*1024){
     return num/1024/1024+"mb"
}else{
   return num/1024+"kb"
}

我以前写文件上传的时候就是怎样写的,太笨啦,效率 也很低

来看看lighttpd怎样写

 

 1 static int mod_status_get_multiplier(double *avg, char *multiplier, int size) {
 2     *multiplier = ' ';
 3 
 4     if (*avg > size) { *avg /= size; *multiplier = 'k'; }
 5     if (*avg > size) { *avg /= size; *multiplier = 'M'; }
 6     if (*avg > size) { *avg /= size; *multiplier = 'G'; }
 7     if (*avg > size) { *avg /= size; *multiplier = 'T'; }
 8     if (*avg > size) { *avg /= size; *multiplier = 'P'; }
 9     if (*avg > size) { *avg /= size; *multiplier = 'E'; }
10     if (*avg > size) { *avg /= size; *multiplier = 'Z'; }
11     if (*avg > size) { *avg /= size; *multiplier = 'Y'; }
12 
13     return 0;
14 }

这样比上面效率高多了,一层一层下去,减小了运算过程,大家一看就清楚

 

posted @ 2014-09-06 19:54  见吻戏哦  阅读(337)  评论(0)    收藏  举报