|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 16 Jan 2003 20:25:27 To : Andrew Kulinich Subject : Re: ?: || if -------------------------------------------------------------------------------- Здравствуй, Andrew Kulinich. ВГ>>> А чем отличается $page=$page?$page:1; от unless ($page){$page=1;} ВГ>>> ? :) AC>> Hичем. И то, и другое дает один и тот же результат неоптимальным AC>> способом. AK> Пожалуй сначала задам вопрос, а если я прав, то это будет моим аргументом. AK> скрипт(правда в условиях постоянного false $page, чтоб срабатываний обеих AK> конструкций было больше) AK> -- AK> #!/usr/bin/perl AK> use warnings; AK> use strict; AK> use Benchmark qw /cmpthese/; AK> my $page; AK> cmpthese (-2, { '||=' => sub{$page ||= 1; undef $page;}, AK> unless => sub{$page = 1 unless $page; undef $page;} AK> } AK> ); AK> -- AK> выдает AK> -- AK> Benchmark: running unless, ||=, each for at least 2 CPU seconds... AK> unless: 3 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ AK> 1631440.31/s (n=3416236) AK> ||=: 1 wallclock secs ( 2.07 usr + 0.00 sys = 2.07 CPU) @ AK> 1846965.25/s (n=3826912) AK> Rate unless ||= AK> unless 1631440/s -- -12% AK> ||= 1846965/s 13% ---- AK> -- AK> This is perl, v5.6.1 built for MSWin32-x86-multi-thread AK> Hикак не доходит формат вывода бенчмарка. AK> Поясните, что в данном случае быстрее? AK> Мне кажется, что в данном случае имеется ввиду, что "unless" на 12 процентов AK> быстрее '||='. Это правильно? Или с точностью до наобормот? С точностью до наоборот. unless у тебя работал 2.09 сек, все в user space, ||= - 2.07 сек. Hо вообще это мало для надежного подсчета. Секунд по 5 бы погонять. AK> Что в данном случае означают символы "1631440/s"? Количество исполнений AK> конструкции за секунду настенного времени? CPU, судя по цифрам. AK> Что есть 1 CPU second? Время, затраченное на данную задачу процессором. То бишь за вычетом работы параллельных задач. -- 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/14454d82782a7.html, оценка из 5, голосов 10
|