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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Serge Matveev                        2:5030/182     27 Oct 2001  02:41:16
 To : All
 Subject : Вопрос
 -------------------------------------------------------------------------------- 
 
 
 26 Oct 01 00:49, Serge Matveev wrote to All:
 
  SM> Вопрос: Является ли вариант
  SM>     eval(join("+",@votes))
  SM> менее эффективным чем простой цикл с суммировнием, а если да, то в чем
  SM> и на сколько?
 
     H-да. Benchmark ни фига не прояснил:
 
     Benchmark вариант с eval почти в полтора раза быстрее. Причем и при
 маленьком количестве элеметов массива (5) и при большом (1000000). Забавно.
 
     Проверял при помощи
 
 @test = (1..1000000);
 
 $t1 = timeit(10000000, '$sum = 0; $sum = eval(join "+", @test);');
 $t2 = timeit(10000000, '$sum = 0; $sum += $_ foreach @test');
 
     получил
 
 Eval = 19 wallclock secs (17.91 usr +  0.00 sys = 17.91 CPU)
 For  = 28 wallclock secs (27.26 usr +  0.00 sys = 27.26 CPU)
 
     С другой стороны, проверка в лоб:
 
 @test = (1..1000000);
 
 print "Hачали...\n";
 
 $sum = 0; $sum += $_ foreach @test;
 print "For  =>", $sum, "\n";
 
 $sum = 0; $sum = eval(join "+", @test);
 print "Eval =>", $sum, "\n";
 
     Дает прямо противоположные результаты - вариант с eavl считается _явно_
 медленнее - это заметно невооруженным глазом.
 
     Вопрос - кто виноват и что делать? Похоже, что оптимизатор в первом случае
 (с timeit) массив в константу развернул? Ответ на исходный вопрос я получил, но 
 вот как с benchmark работать, я уж и не знаю...
 
     Да, perl version 5.005_03 built for i386-linux.
 
         serge@matveev.spb.ru                       Serge Matveev & ...
         ICQ 3575357
 
  * Origin: После нас пришло новое поколение и выбрало Pepsi. (2:5030/182)
 
 

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

 Тема:    Автор:    Дата:  
 Вопрос   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/22753bd9ebfa.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional