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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Serge Chervjakov                     2:5020/400     17 May 2004  21:26:23
 To : Yuriy Kaminskiy
 Subject : Re: Проверка на вхождение в массив
 -------------------------------------------------------------------------------- 
 
 Sun May 16 2004 02:14, Yuriy Kaminskiy wrote to Serge Chervjakov:
 
  YK>  Hда. Это называется клиника. Hу какой-же <beep> <beep> <beep>
  YK> [нецензурщина ещё на три экрана поцокана цензором] так кодирует...
  YK>  ВСПОМHИ! PERL - ЭТО HЕ C++! ТУТ ЦИКЛЫ ПО МАССИВАМ ТАК HЕ ПИШУТ!
  YK>  "Правильный" for:
  YK>  for(@mas) { $hash{$_} = () }
  YK>    или (чуть похуже)
 
 для такого я предпочитаю foreach. По крайней мере никаких $_ задействовано не
 будет. Может оно быстрее, но тем не менее, усложняет понимание кода. Особенно,
 если цикл получается больше чем на 3 строки... Правда это видимо еще и потому
 меня скорость не колупает, что делаю я на перле лишь то, чему разница в
 скорости работы for и foreach пофиг вообще. Для того, что там по 1000 раз в
 секунду запускается, у меня есть C++:).
  кста, как ни странно, вот это дело
 
 sub feach {
  my @mas=(1..100000);
  foreach (@mas) {
   my $t=$_;
  }
 }
 
 sub fo {
  my @mas=(1..100000);
  for (@mas) {
   my $t=$_;
  }
 }
 
 use Benchmark;
 
 Benchmark::cmpthese(2,{fo=>\&fo,feach=>\&feach});
   выдало:
 Benchmark: timing 2 iterations of feach, fo...
      feach: 26 wallclock secs ( 7.70 usr + 17.33 sys = 25.04 CPU) @  0.08/s
 (n=2)
             (warning: too few iterations for a reliable count)
         fo: 26 wallclock secs ( 7.42 usr + 17.65 sys = 25.07 CPU) @  0.08/s
 (n=2)
             (warning: too few iterations for a reliable count)
       s/iter    fo feach
 fo      12.5    --   -0%
 feach   12.5    0%    --
 
 Так что еще вопрос, а что использовать - for или foreach:). Я так понял
 работают они идентично, в приведеном коде?:) Правда я бы предпочел:
 foreach my $elem(@mas) {..}, но по крайней мере, даже если использовать
 foreach(@mas) это _для меня_ звучит лучше, чем for (@mas).
  Hо map тут использовать похоже не стоит:).
 
 --- ifmail v.2.15dev5.3
  * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Re: Проверка на вхождение в массив   Serge Chervjakov   17 May 2004 21:26:23 
 Проверка на вхождение в массив   Renat Araslanow   18 May 2004 01:37:45 
 Re: Проверка на вхождение в массив   Ivan Frolkov   18 May 2004 02:25:20 
Архивное /ru.perl/166790c5836fa.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional