|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Yuriy Kaminskiy 2:5020/517.21 16 May 2004 02:14:56 To : Serge Chervjakov Subject : Re: Проверка на вхождение в массив -------------------------------------------------------------------------------- >>>>> On 00:19 16/5/2004, Serge Chervjakov wrote to Artem Chuprina: SC> sub f { SC> my @mas=(1..10000); my %hash; for (my $i=0; $i<10000; $i++) { SC> $hash{$mas[$i]}=$mas[$i]; SC> } SC> } SC> тут с бенчмарком комбинация проводится... Hда. Это называется клиника. Hу какой-же <beep> <beep> <beep> [нецензурщина ещё на три экрана поцокана цензором] так кодирует... ВСПОМHИ! PERL - ЭТО HЕ C++! ТУТ ЦИКЛЫ ПО МАССИВАМ ТАК HЕ ПИШУТ! "Правильный" for: for(@mas) { $hash{$_} = () } или (чуть похуже) for(@mas) { $hash{$_} = 1 } или уж накрайняк for(@mas) { $hash{$_} = $_ } если так уж хочется сравнить один-в-один с map {$_, $_} @mas. И увидишь, что результат ровно противоположный - for _быстрее_ от восьми (!) раз (на perl-5.00404/single/single/static) до двух раз (на 5.8.1/mthread/mobject/shared - на нём случай map-с-resize заметно оптимизировали). Впрочем, у @hash{@slice} всё равно толще - он в те же полтора-два раза быстрее, чем for (и, в 27 (или, соответственно, в шесть) раз быстрее, чем дурацкий map). SC> и проверить не могу - перл не могу поставить - оперативка SC> побилась, глюки страшные идут:((. <sorry reason="не могу удержаться"> У *кого* оперативка-то побилась? ВСПОМHИ! PERL - ЭТО HЕ C++! ТУТ ЦИКЛЫ ПО МАССИВАМ ТАК HЕ ПИШУТ! </sorry> -- Yuriy Kaminskiy. E-mail (rot13): lhevl.z.xnzvafxvl@zgh-arg.eh --- Gnus/5.1002 (Gnus v5.10.2) XEmacs/21.5 (chayote, linux) * Origin: Code is language! http://www.anti-dmca.org (2:5020/517.21@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/174279745a35a.html, оценка из 5, голосов 10
|