[Moscow.pm] Кто-нибудь это видел?
Ivan B. Serezhkin
ivan на serezhkin.com
Пт Ноя 16 13:24:46 PST 2007
Orlovsky Alexander wrote:
> 17.11.07, 00:02, Ivan B. Serezhkin (ivan на serezhkin.com):
>
>> Orlovsky Alexander wrote:
>>> Где это он такое делает? Так чтобы это не было видно с первого раза? При мапах и грепах?
>> Вот мапы и грепы - это полный абзац.
>> Домашнее задание:
>> Забенчмаркать map, grep, foreach, for my $variable
>> И очень удивится.
>> Бенчмаркать надо на массиве из тыщщи записей.
>> Сравнить ощущения до и после.
>> hint : perldoc Benchmark
>
> мне лениво дома бенчмаркить, по крайней мере сегодня :)) Да и результат я знаю какой будет, кажется.
> Но по-моему такое поведение мапов и грепов --вполне предсказуемое, если вспомнить как они устроены в перле. Который, в свою очередь, совсем не функциональный язык программирования. ;)
Ну да, у них предназначение в потоки строится, причём поток на самом
деле не оптимизирован и выполняется не паралельно.
изза этого волшебные копирования памяти, а в питоне тупле - это struct[]
поэтому очень быстрый, я сам когда увидел - офигел.
> Кстати о языках. Темы на четверг уже расписаны, но на будущее хотелось бы послушать про другие языки программирования, которые применяет уважаемая публика.
> Или можно здесь обсудить. Может завтра напишу сюда письмо с новой темой, если я еще своим спамом никого не утомил :)
Рано ещё, про перл не наболтались, хотя обзорная лекция слабые стороны
перла по сравнению с другими языками, это будет очень круто, но есть
одна проблема, собрать эти сведения воедино - адский труд, я например
пока не готов к такому.
Бенч вот:
#!/usr/bin/perl
# -*- Mode:cperl; Encoding:utf-8 -*-
use Benchmark qw(cmpthese);
my @a=(1..10000);
my @b=(1..10000);
my @c=(1..10000);
my @d=(1..10000);
cmpthese(10000, {
map => sub { map {$_++} @a; },
grep => sub { grep {$_++; 1} @b },
foreach => sub { $_++ foreach @c },
for => sub { for (@d) {$_++} },
},
);
-*- mode: compilation; default-directory: "~/src/" -*-
Compilation started at Sat Nov 17 00:15:57
perl -w /home/vany/src/t.pl
Rate grep map for foreach
grep 294/s -- -28% -67% -71%
map 408/s 39% -- -55% -60%
for 898/s 206% 120% -- -11%
foreach 1012/s 244% 148% 13% --
Compilation finished at Sat Nov 17 00:17:17
--
Ivan B. Serezhkin
Подробная информация о списке рассылки Moscow-pm