|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igor S Chencov 2:5020/400 14 May 2002 13:40:35 To : Lishtovny Denis Subject : Re: нужен алгоритм или как сделать двумерный массив -------------------------------------------------------------------------------- Lishtovny Denis <lishtovny@rtsoft.msk.ru> wrote: LD: Всем привет. LD: вот такая задача: LD: есть файл (строк 100000-200000): LD: 192.168.251.1 209.144.34.3 360 0 6 0 3758 25 6 1 24603 48488565 48546166 11 LD: 64.157.4.81 195.34.37.40 809 0 16 0 25 3757 6 9 24604 48491073 48542181 11 [[skip]] LD: необходимо по первому столбцу каждого разного ИП подсчитать сколько LD: входящего (третий столбец) и исходящего (четвертый столбец) трафика. LD: есть несколько вариантов (точнее два) LD: 1) заносить каждую стоку в БД и затем все считать LD: минусы: БД растет не по дням а по часам => увеличивается время запросов и LD: уменьшается место на диске. LD: 2) создать двумерный массив из файла (пока не знаю как) и сделать с ним LD: манипуляции (подсчитать колво трафика повторяющих ИП и в итоге получить LD: массив без повторяющихся ИП LD: минусы: массив получится от 100000-200000, боюсь памяти не хватит. LD: Может кто что то подобное уже реализовывал, может поделитесь алгоритмом или LD: другими идеями. Hу а чем хэш с анонимным массивом не устраивает ? Типа - while(<>) { ($p1,$p2,$p3)= (split(/ /))[0,2,3]; $traffic{$p1}->[0]+=$p2; $traffic{$p1}->[1]+=$p3; } foreach (keys(%traffic)) { printf ("%s %d %d\n",$_,$traffic{$_}->[0],$traffic{$_}->[1]); } Bye ! -- -= Игорь Ченцов - системный администратор | =- -= E-mail chs<at>aquilon.ru | АКВИЛОH =- -= г. Архангельск | =- --- ifmail v.2.15dev5 * Origin: Internet-Arkhangelsk Company (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/45967f92eee4.html, оценка из 5, голосов 10
|