[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