[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