Branch: Tag:

2013-05-19

2013-05-19 17:14:14 by Martin Nilsson <nilsson@opera.com>

30% faster A/AAAA

320:       string decode_domain(string msg, array(int) n)    { -  array(string) domains=({}); -  +     int pos=n[0];    int next=-1;    array(string) ret=({});
560:    m->name=x[2..]*".";    break;    case T_A: -  m->a=sprintf("%{.%d%}",values(s[next[0]..next[0]+m->len-1]))[1..]; +  m->a=(array(string))values(s[next[0]..next[0]+m->len-1])*".";    break;    case T_AAAA: -  m->aaaa=sprintf("%{:%02X%02X%}", -  values(s[next[0]..next[0]+m->len-1])/2)[1..]; +  m->aaaa=sprintf("%{%02X%}", +  (values(s[next[0]..next[0]+m->len-1])/2)[*])*":";    break;    case T_LOC:    m->version = decode_byte(s,next);
647:       m->length=sizeof(s);    -  array(string) tmp=({}); -  +     array(int) next=({12});    m->qd = allocate(m->qdcount);    for(int i=0; i<m->qdcount; i++) {