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