|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 21 Nov 2002 15:37:35 To : "Timur Vafin" Subject : Re: map и foreach -------------------------------------------------------------------------------- Здравствуй, Timur Vafin. V>>> Кто может подсказать, почему map работает медленнее прямого перебора V>>> массива? AC>> Потому что он генерирует новый список. А то, что тебе результат не нужен, AC>> для него не аргумент. TV> Что то не пойму... TV> #!/usr/bin/perl -w TV> use Benchmark; TV> @junk = `cat /etc/motd`; TV> $count = 100_000; TV> timethese($count, { TV> 'map' => sub { my @a = @junk; TV> map { s/a/b/ } @a; TV> }, TV> 'for' => sub { my @a = @junk; TV> foreach (@a) { s/a/b/ }; TV> }, TV> }); TV> Результат: TV> Benchmark: timing 100000 iterations of for, map... TV> for: 0 wallclock secs ( 0.22 usr + 0.00 sys = 0.22 CPU) @ TV> 454545.45/s (n=100000) TV> (warning: too few iterations for a reliable count) TV> map: 0 wallclock secs ( 0.14 usr + -0.01 sys = 0.13 CPU) @ TV> 769230.77/s (n=100000) TV> (warning: too few iterations for a reliable count) TV> Всё будет хорошо... Повезло соптимизировать? Хотя поскольку too few iterations for a reliable count, я бы еще померил... -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/1445466ee03e0.html, оценка из 5, голосов 10
|