[Moscow.pm] Проверка IP на валидность
Kaltashkin Eugene
zhecka на gmail.com
Пн Июн 9 07:44:20 PDT 2008
Anatoly Sharifulin пишет:
> :)
> Если нужна скорость, то регекспы вам не помогут.
> Делайте просто - inet_aton!
>
> Хотя я не знаю, за чем вы там гонитесь, сделал бы только на одной
> регекспе.
На самом деле интересна скорость обработки.
Вот бенч конверта из inet_aton в презентабельный вид.
Для начала смотрим что быстрее всех распаковывает byteip в разные виды
для хеширования.
unpackH 7f7f7f7f
ntoa 127.127.127.127
unpackint 127.127.127.127
unpackN 2139062143
cmpthese( 100000, {
unpackhex => sub { my $iaddr = inet_aton('127.127.127.127'); my $unaddr
= unpack('H*',$iaddr);},
ntoa => sub { my $iaddr = inet_aton('127.127.127.127'); my $unaddr =
inet_ntoa($iaddr); },
unpackint => sub { my $iaddr = inet_aton('127.127.127.127'); my $addr =
join(".", map { $_ } unpack("C*",$iaddr)); },
unpackN => sub { my $iaddr = inet_aton('127.127.127.127'); my $addr =
unpack("N*",$iaddr); },
});
Rate unpackint ntoa unpackhex unpackN
unpackint 46545/s -- -48% -71% -72%
ntoa 89510/s 92% -- -45% -46%
unpackhex 162025/s 248% 81% -- -3%
unpackN 166234/s 257% 86% 3% --
Подробная информация о списке рассылки Moscow-pm