首页 > 代码库 > nginx之ngx_strlow函数参数思考
nginx之ngx_strlow函数参数思考
简约不简单的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写法更具优势。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。