guid to nginx internals

Mykola Zubach zuborg at advancedhosters.com
Fri May 4 19:00:26 MSD 2007


On Fri, 4 May 2007 21:13:46 +0700
"Denis F. Latypoff" <denis at gostats.ru> 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] , но для этого придется использовать сдвиги, чтобы подготовить
данные для проверки





More information about the nginx-ru mailing list