mirror of
https://github.com/nginx/nginx.git
synced 2025-06-10 19:42:39 +08:00
speed up ngx_http_charset_recode() for 25%: google-perftools reported
that CPU usage of charset body filter has decreased from 7.5% to 5.5% if gzipping is disabled
This commit is contained in:
parent
70d0961658
commit
430db103f6
@ -561,25 +561,33 @@ ngx_http_charset_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
|
||||
static ngx_uint_t
|
||||
ngx_http_charset_recode(ngx_buf_t *b, u_char *table)
|
||||
{
|
||||
u_char *p;
|
||||
u_char *p, *last;
|
||||
|
||||
for (p = b->pos; p < b->last; p++) {
|
||||
last = b->last;
|
||||
|
||||
if (*p == table[*p]) {
|
||||
continue;
|
||||
for (p = b->pos; p < last; p++) {
|
||||
|
||||
if (*p != table[*p]) {
|
||||
goto recode;
|
||||
}
|
||||
|
||||
while (p < b->last) {
|
||||
*p = table[*p];
|
||||
p++;
|
||||
}
|
||||
|
||||
b->in_file = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
recode:
|
||||
|
||||
do {
|
||||
if (*p != table[*p]) {
|
||||
*p = table[*p];
|
||||
}
|
||||
|
||||
p++;
|
||||
|
||||
} while (p < last);
|
||||
|
||||
b->in_file = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user