码迷,mamicode.com
首页 > 其他好文 > 详细

nginx之ngx_strlow函数参数思考

时间:2014-07-21 13:28:20      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:re   c   ar   amp   设计   size   

简约不简单的ngx_strlow() 函数,不错的形参设计方式。

1.如果本人设计ngx_strlow()函数会怎么写?
2.ngx_strlow函数形参相比本人的 写法有什么优势?

A1.本人写法如下

#define my_tolower(c) (char)(((c) >= ‘A‘ && (c) <= ‘Z‘) ? ((c) | 0x20) : (c))
char *my_strlow(char *s) {
    char *str = s;
    while (*s) {
        *s = my_tolower(*s);
        s++;
    }   
    return str;
}

A2.操作不同buf时,写法和效率都有优势。

究竟ngx_strlow比本人的写法有什么优势?会从易用性,效率两方面比较。
比较易用性:
1.操作同一块buf
  1.me的用法 my_strlow(buf);                               + 1分
  2.nginx的用法 ngx_strlow(buf, buf, strlen(buf) + 1);
2.操作不同的buf
  1.me的用法

    char buf2[MAX] = "";
    strncpy(buf2, buf, sizeof(buf) - 1);
    buf2[sizeof(buf) - 1] = ‘\0‘;
    my_tolower(buf2);

  2.ngx_strlow(buf2, buf, strlen(buf) + 1);                + 1分

比较效率:
2.操作不同的buf
  1.me的用法
    两次值拷贝
  2.ngx_strlow                                             + 1分
    一次值拷贝

从得分上看ngx_strlow写法更具优势。


nginx之ngx_strlow函数参数思考,布布扣,bubuko.com

nginx之ngx_strlow函数参数思考

标签:re   c   ar   amp   设计   size   

原文地址:http://my.oschina.net/guonaihong/blog/293150

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!