ускорить скрипт perl

Модератор: Модераторы разделов

Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

ускорить скрипт perl

Сообщение gcc »

как можно ускорить скрипт без многопоточности?
в принципе можно и многопоточность, но Jail ставить отдельный, не хочется для него...

тут возможно сделать 20 детей, а количество хэша разделаить на 20?

Код: Выделить всё

#!/usr/bin/perl

use LWP::Simple;

# use Proc::Fork;

my $spam = get("http://www.stopforumspam.com/downloads/bannedips.csv");

my $hash;

$hash->{$1} ++ while $spam =~ /(\d+\.\d+\.\d+\.\d+)/smg xor grep {$_>255} split /\./,$1;

system("ipfw table 1 flush");

my $parent=$$;

my $child=fork();

if($$ == $parent){

print "Parent: pid=$$;($parent)\n";

} else {

kill("TERM",$parent); # убиваем родителя

#system("kill -9 $parent");

while( my $key = each %$hash){

system("ipfw table 1 add $key");

}

kill("TERM",$$);
exit; # на всякий случай
}

exit;  # на всякий случай
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: ускорить скрипт perl

Сообщение diesel »

Код: Выделить всё

$hash->{$1} ++ while $spam =~ /(\d+\.\d+\.\d+\.\d+)/smg xor grep {$_>255} split /\./,$1;


вынос мозга :)
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: ускорить скрипт perl

Сообщение gcc »

если убрать:

Код: Выделить всё

xor grep {$_>255} split /\./,$1;

то он медленно ищет, а с этой строкой почти файл мегабайт меньше за секунду по-моиму....

в данном скрипте ipfw медленно добавляет очень, если сделать больше чилдренов, то load averages больше 10, и точно не знаю корректно ли оно добавило, но наверное не проблема, можно раз в стуки запускать скрипт... помогает...
Спасибо сказали:
alfss
Сообщения: 262

Re: ускорить скрипт perl

Сообщение alfss »

выкинь ipfw
открой для себя pf и таблицы
Спасибо сказали: