[Moscow.pm] Сравнение языков

Михаил Монашёв postmaster на softsearch.ru
Вт Фев 10 09:39:58 PST 2015


Здравствуйте, Mons.

> Пожалуй  в  данном  вопросе  стоит начать с того, что CPU-арифметика
> никак  не  сильный  конёк  перла.  (Кстати,  удивлён,  что  никто не
> затестил CUDA)

> Во вторых - CPU-intensive задачи выгоднее решать именно в синхронной
> модели.  Асинхрон  рулит  только тогда, когда переключение контекста
> планировщиком   OS   становится   дороже,  чем  “ручное"  управление
> контекстами при помощи event-машины.


> Ну  и в третьих, хотелось бы спросить: какое отношение данная задача
> имеет к реальной жизни?

Можно  затестить  работу  по  http  1.1  с  keep-alive.  Например,  на
GET-запрос  к /ping?r=12345 всегда выдавать ответ в теле "pong: 12346"
,  т.е.  на единицу больше, чем было в параметре r. А на все остальные
запросы  отвечать 404-ой ошибкой. Парсить url обязательно, т.е. просто
выкусывать  из  урла  параметр  r  нельзя. Парсить http-заголовки тоже
обязательно.  Вместо  эталонной  реализации  на  С подойдёт nginx, где
через  return  и  map  можно  реализовать  отдачу  нужного  тела  (для
уменьшения размера конфига nginx-а можно ограничить значения r от 0 до
1000).   В  идеале  взять  какой-нить  современный  сервер,  где  ядер
побольше,  например Core i7, с современным 64-битным Лунуксом или Фрёй
и  гигабитной сетевухой. И было б вообще идеально запускать запросы по
сети  с  другого сервера. Но можно и какой-нить попроще сервер/сервера
найти. Есть у кого-нить 2 ненагруженных сервера?

Результаты  измерять  с  десятой  секунды,  если конечно такое конечно
возможно,  чтобы реализации с форками успели подстроиться под нагрузку
и  нафоркать  нужное  им  количество  воркеров. Измерять то, что умеет
измерять тестирующая тулза.

Такая  задача легко реализуема и больше похожа на реальную.

Можно было б ещё к БД или мемкешеду ходить, но ИМХО от них будет много
шума в измерениях, особенно от БД. Хотя можно мемкешедом ограничиться,
например,  читать 10 ключей key1-10 и когда они все прочитаны (успешно
или  нет,  не  важно), сохранять в мемкешед текущее значение r и после
успешного  сохранения выдавать ответ. В nginx-е чтение ключей наверное
можно  через  ssi сделать, а запись в мемкешед только через встроенный
перл, но это не чистый С тогда выйдет.

-- 
С уважением,
 Михаил                          mailto:postmaster на softsearch.ru



Подробная информация о списке рассылки Moscow-pm