ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re[2]: guid to nginx internals



On Fri, 4 May 2007 21:13:46 +0700
"Denis F. Latypoff" <denis@xxxxxxxxxx> wrote:

> Есть две программы
> 
> nginx_method.c:
> 
> int
> main (void)
> {
>     char m[] = "POST";
>     if (m[1] == 'O')
>         printf ("OK\n");
> }
> 
Слишком короткая программа, должна быть ещё минимум одна проверка m[0]
на равность 'C' и вторая на равность 'P'
 
> 
> 0W_method.c:
> 
> #define  STR4_POST 0x54534f50
> 
> int
> main (void)
> {
>     char m[] = "POST";
>     unsigned int tmp4 = *(unsigned int *) m;
> 
>     if (tmp4 == STR4_POST)
>         printf ("OK\n");
> }
А здесь должна быть ещё только одна проверка на равность 0x59504f43

В обоих случаях не учитывается распредение вероятностей получить тот
или иной метод во входящем запросе.
И в любом случае основная задержка пойдет на fetch данных из L1 или L2
Конечно, есть шанс что компилятор будет умным и загрузит m[] в регистр
достаточной длины, и будет его использовать как source для проверок
m[0..4] , но для этого придется использовать сдвиги, чтобы подготовить
данные для проверки



 




Copyright © Lexa Software, 1996-2009.