Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Pavel Ammosov                        2:5020/400     28 Oct 2001  16:36:44
 To : Serge Matveev
 Subject : Re: Вопрос
 -------------------------------------------------------------------------------- 
 
 Serge Matveev wrote:
 
 SM>    Дано: массив чисел @array.
 SM>    Требуется: сумма элементов массива.
 SM>    Вопрос: Является ли вариант
 SM>    eval(join("+",@votes))
 
 SM>    менее эффективным чем простой цикл с суммировнием, а если да, то
 SM>    в чем и на сколько?
 
 Да, строковой eval будет каждый раз перекомпилироватся, что приведет к 
 большим тормозам.
 
 #!/usr/bin/perl -w
 use strict;
 use Benchmark;
 
 my @foo;
 for (1 .. 200) {
   push @foo, int(rand(300));
 }
 
 timethese(-5, { # -5 это фича новых perl'ов.  Значит исполнять 5 секунд,
                 # минимум
   'eval' => sub { my $sum = eval(join("+",@foo)) },
   'for' => sub { my $sum; for (@foo) { $sum += $_ }} ,
   });
 perl mt.pl
 Benchmark: running eval, for, each for at least 5 CPU seconds...
 eval: 5 wallclock secs ( 5.27 usr +  0.00 sys =  5.27 CPU) @ 919.54/s (n=4846)  
 for: 6 wallclock secs ( 5.24 usr +  0.01 sys =  5.25 CPU) @ 8143.62/s (n=42754)
 
 Вариант с eval в 9 раз медленнее.
 
 SM>Другими словами, большой ли overhead у eval? 
 
 У eval "строка" - да.  у eval {block} - нет.
 
 -- 
 Павел Аммосов, email: apavel@aha.ru, icq uin: 19210183
 www: http://isabase.philol.msu.ru/~apavel/
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Вопрос   Serge Matveev   26 Oct 2001 00:49:02 
 Re: Вопрос   Vladimir Podgorny   26 Oct 2001 11:13:47 
 Re: Вопрос   vilfred   27 Oct 2001 11:34:39 
 поправка   vilfred   27 Oct 2001 11:36:44 
 Вопрос   Andrew Alakozow   26 Oct 2001 17:20:34 
 Вопрос   Serge Matveev   27 Oct 2001 02:41:16 
 Re: Вопрос   Pavel Ammosov   28 Oct 2001 16:36:44 
 Вопрос   Serge Matveev   28 Oct 2001 18:31:16 
Архивное /ru.perl/657722d38851.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional