Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Самая быстрая функция, Или как правельно создавать функции? 
:(
    Опции темы
nik118
Дата 19.5.2005, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.1.2005
Где: Латвия

Репутация: нет
Всего: нет



Добрый день мне тут дали функцию написать, целый день бюсь, посмотрите опытным взглядом всёли правильно:

Задание следующее: Имеется масив с IP адресами ,задачя написать функцию проверки пренадлежности случаёного IP к этому масиву.
Главный критерий скорость работы:


Код

//-------------------------------------------Моя функция--------------------------//
function funkcija_check($ip,$masiv_ip)
{

for( $i = 0; $i < count($masiv_ip); $i++ ){
 
 if($masiv_ip[$i]==$ip){
  return $ip;
  }
}
}
//---------------------------------------обработчик----------------------------//
$stat = array();
$start = time();
for( $i = 0; $i < 10000; $i++ ){
 $ip = rand( 1,254 ).'.'.rand( 1,254 ).'.'.rand( 1,254 ).'.'.rand( 1,254 );

$res = funkcija_check($ip,$masiv_ip);
$stat[$res]=+1;
}

$end = time();
//-------------------------------------Вывод------------------------------------//
print_r($stat)."\n";
print ( $end - $start )."\n";



Тестировал функцию с одним IP который точно в масиве есть всё нормально вернула, как подключаю цикл со случайными IP не чего кроме
Array ( [] => 1 ) 1
не возрощает ,а если ставлю количесиво циклов как в задании $i < 100000 просто виснит комп, так в чём проблемо где-то ошибка, или мощности просто не хватает?
PM MAIL ICQ   Вверх
Dexter
Дата 19.5.2005, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Имхо ты забыл...

Код

function funkcija_check($ip)    
{
global $masiv_ip;    
for( $i = 0; $i < count($masiv_ip); $i++ ){    
    
 if($masiv_ip[$i]==$ip){    
  return $ip;    
  }    
}    
}


И тогда в аргументах не надо передавать...
Добавлено @ 20:09
А хотя... Блин... Давно за пхп не сидел.... Может туплю сильно, но попробуй...


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Opik
Дата 19.5.2005, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Код

if(in_array("217....", $ips))
{
print "есть такой";
}

!?
PM MAIL Skype   Вверх
IZ@TOP
Дата 20.5.2005, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Код

$ips = array_flip($ips);
if(isset($ips['127...'])) {
   echo 'есть такой';
}


Opr, smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
IZ@TOP
Дата 20.5.2005, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



А теперь результат тестов!


Opr, будешь смеятся, но функция in_array работает в 90 раз медленнее!!! smile

in_array - Исполнение подсчета вхождений IP при помощи первого способа занял 28.10576, всего вхождений 0.

array_flip - Исполнение подсчета вхождений IP при помощи первого способа занял 0.29931, всего вхождений 0.

код:

Код

<pre>
<?php

require 'base_ip.php';

// Секундомеры
function startTimer() {
    $mtime = explode (' ', microtime ());
    return $mtime[1] + $mtime[0];
}

function endTimer($start) {
    $mtime = explode (' ', microtime ());
    return round (($mtime[1] + $mtime[0] - $start), 5);
}


// Глобальный цикл проверки вхождений полученных еще отку-да то IP адресов.

function isset_ip(&$ip) {
    global $duplicate_sets_ip;
    
    return (isset($duplicate_sets_ip[$ip])) ? true : false;

    //global $sets_ip;
    
    //return (in_array($ip, $sets_ip)) ? true : false;

}

$result_count    = 0;

$stime    = startTimer();

// Создаем дупликат с значениями в ключах
$duplicate_sets_ip    = array_flip($sets_ip);

for($i = 0; $i < 20000; $i++) {
    
    // Генерируем случайный IP
    $ip = rand(1,254).'.'.rand(1,254).'.'.rand(1,254).'.'.rand(1,254);
    
    // Проверяем при помощи нашей функции
    if(isset_ip($ip)) $result_count++;
}

$stime    = endTimer($stime);
echo "Исполнение подсчета вхождений IP при помощи первого способа занял $stime, всего вхождений $result_count.\r\n";


?>


-- base_ip.php
Код

<?php

$sets_ip    = array(
    '10.154.144.215',
    '4.103.147.75',
    '135.190.252.244',
    '172.217.163.207',
    '12.113.223.81',
    '186.186.138.114',
    '85.113.248.170',
    '239.201.7.241',
    '37.126.9.193',
    '11.198.216.17',
    '58.91.205.87',
    '202.114.192.141',
    '86.196.10.43',
    '241.138.127.40',
    '56.124.122.251',
    '63.209.210.160',
    '159.67.224.139',
    '113.7.125.182',
    '77.213.253.153',
    '74.232.62.43',
    '1.247.145.227',
    '136.59.211.189',
    '122.104.91.46',
    '236.185.1.46',
    '122.229.27.54',
    '56.39.130.61',
    '191.50.143.186',
    '41.66.27.168',
    '12.13.122.126',
    '127.201.136.51',
    '29.52.155.64',
    '251.129.140.155',
    '180.106.178.190',
    '95.39.230.161',
    '146.110.128.188',
    '103.121.87.7',
    '118.254.195.247',
    '213.58.157.137',
    '32.223.61.50',
    '107.41.121.232',
    '79.205.171.41',
    '228.7.171.231',
    '196.137.208.158',
    '7.144.243.68',
    '65.211.108.82',
    '140.137.19.190',
    '130.107.62.4',
    '58.176.197.24',
    '74.18.5.114',
    '203.197.207.14',
    '88.133.129.96',
    '6.136.239.98',
    '107.135.117.139',
    '163.185.230.211',
    '69.214.158.180',
    '104.25.115.37',
    '164.53.188.156',
    '20.101.85.20',
    '75.97.146.2',
    '100.96.77.96',
    '245.28.221.165',
    '27.200.28.201',
    '104.35.95.71',
    '246.96.127.19',
    '96.57.213.165',
    '185.228.58.248',
    '157.29.4.131',
    '35.25.11.62',
    '224.142.166.158',
    '240.184.176.159',
    '234.79.127.184',
    '229.136.235.223',
    '122.29.79.143',
    '192.69.126.190',
    '80.184.211.228',
    '65.175.39.250',
    '44.225.206.120',
    '40.136.164.86',
    '205.90.1.11',
    '53.143.184.142',
    '244.223.40.90',
    '40.132.36.100',
    '99.53.5.39',
    '191.40.163.152',
    '214.23.88.51',
    '190.57.248.234',
    '17.70.224.60',
    '226.119.229.28',
    '207.132.96.4',
    '237.164.40.233',
    '213.144.149.73',
    '158.127.128.23',
    '224.42.65.203',
    '181.199.174.97',
    '178.19.34.78',
    '241.63.114.137',
    '11.9.248.141',
    '21.164.140.80',
    '168.203.134.75',
    '220.182.188.116',
    '76.30.137.70',
    '13.56.194.182',
    '181.189.194.64',
    '97.230.95.214',
    '165.108.241.246',
    '155.132.82.149',
    '218.230.214.45',
    '124.206.90.178',
    '23.240.50.159',
    '194.135.56.236',
    '25.74.195.18',
    '48.111.172.6',
    '160.175.75.65',
    '130.68.118.187',
    '110.226.135.237',
    '123.198.87.207',
    '66.165.59.216',
    '217.183.13.3',
    '218.181.36.194',
    '94.213.89.19',
    '250.210.4.106',
    '200.226.250.192',
    '97.190.152.143',
    '217.158.179.205',
    '203.57.163.242',
    '80.198.66.247',
    '253.2.228.85',
    '236.31.102.1',
    '181.214.28.116',
    '112.99.223.166',
    '179.123.10.18',
    '152.86.112.171',
    '182.172.108.236',
    '40.182.213.205',
    '128.45.6.198',
    '219.70.209.205',
    '207.186.148.94',
    '118.194.37.109',
    '102.23.217.115',
    '182.237.140.105',
    '2.1.149.198',
    '94.134.202.131',
    '99.57.134.25',
    '43.78.159.124',
    '75.126.109.40',
    '220.3.200.19',
    '121.146.11.180',
    '54.101.10.8',
    '172.53.30.128',
    '243.55.32.26',
    '166.37.103.74',
    '216.54.203.10',
    '38.35.166.208',
    '163.35.205.152',
    '234.237.155.214',
    '21.189.229.132',
    '183.72.7.27',
    '234.197.212.143',
    '73.239.167.92',
    '231.252.89.119',
    '97.165.63.91',
    '202.35.51.253',
    '190.42.140.216',
    '83.244.35.225',
    '34.60.79.148',
    '66.54.232.228',
    '76.155.73.77',
    '87.164.70.197',
    '250.10.56.196',
    '82.3.246.68',
    '240.70.220.186',
    '241.13.191.33',
    '236.16.247.237',
    '248.133.94.27',
    '174.40.73.32',
    '38.45.146.242',
    '245.78.144.15',
    '57.193.29.105',
    '132.66.141.124',
    '240.5.188.62',
    '24.194.2.40',
    '16.181.51.49',
    '113.147.169.208',
    '84.148.63.2',
    '81.113.73.57',
    '127.97.161.111',
    '118.30.158.30',
    '80.219.26.60',
    '162.87.106.65',
    '134.196.103.39',
    '148.222.107.99',
    '226.219.76.237',
    '12.117.98.66',
    '38.224.134.85',
    '200.216.16.159',
    '15.148.213.26',
    '141.202.51.59',
    '93.180.251.251',
    '23.11.139.211',
    '209.5.184.188',
    '39.89.218.44',
    '45.65.202.27',
    '124.116.223.2',
    '46.44.242.214',
    '215.31.91.21',
    '147.132.240.177',
    '248.23.13.39',
    '33.12.133.106',
    '161.29.179.244',
    '147.128.111.192',
    '142.239.17.67',
    '171.163.111.117',

    '130.82.227.206',
    '43.53.70.72',
    '60.3.236.88',
    '206.242.177.247',
    '124.191.235.159',
    '90.160.116.70',
    '2.76.161.101',
    '138.250.76.242',
    '141.102.204.104',
    '34.195.249.188',
    '222.205.46.106',
    '221.186.63.102',
    '182.68.133.41',
    '128.160.216.171',
    '211.135.146.102',
    '201.51.137.81',
    '247.90.22.225',
    '120.52.16.19',
    '225.121.206.91',
    '77.99.44.179',
    '81.167.125.146',
    '8.128.157.241',
    '8.163.226.72',
    '104.75.38.142',
    '194.46.189.60',
    '47.131.132.73',
    '69.6.206.45',
    '28.234.120.224',
    '76.234.214.220',
    '237.64.194.24',
    '153.159.147.11',
    '103.67.35.171',
    '236.224.198.117',
    '70.179.89.94',
    '8.113.48.222',
    '74.83.37.238',
    '166.16.143.7',
    '53.222.71.30',
    '140.123.164.171',
    '197.27.127.169',
    '120.117.48.143',
    '188.194.141.84',
    '42.188.240.112',
    '216.154.50.220',
    '98.19.167.17',
    '219.95.44.4',
    '222.55.22.46',
    '132.209.60.135',
    '99.232.247.137',
    '147.178.35.42',
    '172.232.18.225',
    '199.193.158.170',
    '124.245.33.249',
    '225.190.112.200',
    '146.210.229.143',
    '163.106.89.69',
    '173.61.34.99',
    '201.130.24.223',
    '143.243.146.52',
    '23.201.107.88',
    '246.186.248.195',
    '73.253.22.110',
    '164.78.23.208',
    '34.225.213.226',
    '89.112.169.29',
    '97.51.108.117',
    '209.223.115.102',
    '196.177.151.229',
    '209.94.51.109',
    '17.31.27.243',
    '24.169.167.242',
    '1.58.178.97',
    '99.132.146.181',
    '87.193.33.234',
    '117.171.179.119',
    '211.121.37.84',
    '13.225.202.246',
    '55.31.127.90',
    '233.229.152.243',
    '64.113.238.190',
    '205.120.218.48',
    '173.50.54.65',
    '119.88.85.105',
    '67.33.18.161',
    '167.70.195.97',
    '189.253.68.159',
    '30.2.232.213',
    '221.136.139.251',
    '152.76.132.137',
    '101.129.169.118',
    '217.226.85.59',
    '18.168.94.206',
    '162.137.29.170',
    '164.189.104.197',
    '175.252.153.152',
    '220.128.136.26',
    '195.254.140.195',
    '123.177.126.140',
    '157.79.181.236',
    '65.17.12.220',
    '252.173.212.211',
    '234.93.236.202',
    '162.216.170.58',
    '60.88.228.24',
    '78.147.244.220',
    '241.192.179.130',
    '191.154.119.126',
    '206.88.24.202',
    '183.176.237.221',
    '145.220.209.176',
    '244.148.28.187',
    '249.17.161.244',
    '57.7.190.214',
    '200.176.72.88',
    '67.198.151.239',
    '189.128.132.152',
    '209.148.103.199',
    '152.61.23.119',
    '167.49.235.30',
    '26.167.190.179',
    '131.91.230.176',
    '1.128.61.14',
    '38.210.25.66',
    '13.135.81.70',
    '77.88.64.145',
    '254.124.187.29',
    '186.172.29.95',
    '151.32.60.81',
    '47.142.112.106',
    '150.49.145.163',
    '104.189.248.116',
    '187.111.126.211',
    '40.251.120.60',
    '197.156.191.162',
    '46.9.173.128',
    '118.119.25.206',
    '58.161.89.5',
    '141.191.71.26',
    '12.138.58.133',
    '201.55.11.66',
    '99.128.18.196',
    '236.156.37.9',
    '1.68.158.130',
    '181.174.85.45',
    '163.149.161.126',
    '227.48.91.111',
    '14.54.218.119',
    '57.222.246.143',
    '252.227.10.47',
    '115.124.232.78',
    '51.96.238.100',
    '84.198.241.106',
    '111.105.74.215',
    '154.127.207.164',
    '112.193.218.73',
    '8.103.68.188',
    '247.40.98.120',
    '90.60.15.115',
    '197.91.159.38',
    '83.190.237.136',
    '153.30.83.18',
    '177.175.164.186',
    '52.46.60.250',
    '55.206.240.202',
    '83.75.28.162',
    '160.218.147.121',
    '184.55.176.199',
    '177.150.75.133',
    '37.176.187.44',
    '41.190.216.176',
    '86.121.252.140',
    '196.23.252.184',
    '14.79.52.171',
    '72.91.120.95',
    '12.242.34.74',
    '112.78.9.99',
    '16.37.132.37',
    '254.174.110.134',
    '216.164.30.253',
    '179.62.106.134',
    '41.51.172.149',
    '79.186.188.37',
    '189.142.241.171',
    '143.229.37.34',
    '90.120.172.253',
    '54.126.99.60',
    '187.176.158.80',
    '3.70.55.52',
    '163.245.133.96',
    '181.249.97.202',
    '208.11.35.236',
    '15.94.161.190',
    '5.172.54.184',
    '204.47.183.208',
    '253.156.127.130',
    '177.46.100.193',
    '126.154.189.10',
    '124.27.102.80',
    '68.102.179.15',
    '236.181.126.61',
    '16.191.31.82',
    '195.189.108.71',
    '160.104.191.147',
    '191.244.239.48',
    '184.30.87.147',
    '162.27.202.181',
    '23.161.164.17',
    '44.236.186.154',
    '122.179.103.203',
    '27.46.129.156',
    '163.20.97.133',
    '47.156.220.125',
    '83.129.80.252',
    '42.249.143.251',
    '73.189.244.241',
    '201.5.88.215',
    '69.135.17.38',
    '208.125.245.210',
    '7.159.97.87',
    '252.37.43.170',
    '78.197.168.71',
    '17.185.180.34',
    '219.185.165.179',
    '200.251.85.245',
    '111.60.25.95',
    '231.173.202.231',
    '200.12.193.10',
    '45.140.214.184',
    '168.232.97.112',
    '87.89.57.40',
    '206.149.182.86',
    '40.211.177.243',
    '249.206.129.121',
    '94.188.254.221',
    '235.87.131.154',
    '186.211.227.166',
    '100.236.122.122',
    '252.216.30.14',
    '34.81.40.215',
    '229.140.110.209',
    '228.67.75.115',
    '53.172.148.179',
    '111.130.163.13',
    '169.251.80.116',
    '126.208.242.100',
    '5.57.99.210',
    '211.235.247.58',
    '6.36.138.143',
    '48.150.115.77',
    '108.124.137.106',
    '82.142.37.94',
    '247.4.30.35',
    '248.148.203.46',
    '107.120.8.120',
    '230.104.41.123',
    '132.155.8.45',
    '218.201.251.7',
    '3.45.221.254',
    '148.122.6.143',
    '167.234.74.175',
    '211.56.5.214',
    '50.152.13.253',
    '90.195.185.156',
    '99.242.227.170',
    '228.221.228.160',
    '248.187.146.117',
    '55.70.70.161',
    '181.178.214.30',
    '15.187.156.97',
    '89.152.113.100',
    '45.1.170.158',
    '161.43.33.9',
    '80.209.46.26',
    '80.44.167.202',
    '58.241.229.147',
    '37.91.195.107',
    '169.32.149.202',
    '222.120.54.169',
    '95.28.250.128',
    '64.67.189.70',
    '27.165.213.116',
    '8.123.28.1',
    '156.125.230.101',
    '242.226.17.153',
    '164.99.237.21',
    '197.56.90.207',
    '241.24.171.66',
    '63.59.186.100',
    '70.89.222.173',
    '30.171.240.23',
    '95.232.72.23',
    '35.75.188.166',
    '254.135.167.63',
    '14.214.222.212',
    '228.242.188.227',
    '157.19.24.98',
    '207.236.72.198',
    '148.186.38.13',
    '130.53.9.168',
    '176.146.201.148',
    '185.139.191.72',
    '179.87.195.186',
    '56.174.46.101',
    '92.201.211.64',
    '186.97.17.192',
    '107.170.185.225',
    '5.97.42.27',
    '159.185.55.98',
    '211.111.57.50',
    '186.182.9.128',
    '233.75.253.198',
    '123.98.240.252',
    '6.180.57.154',
    '161.123.174.151',
    '230.108.170.108',
    '237.193.4.17',
    '79.51.18.250',
    '34.245.173.39',
    '252.198.47.10',
    '249.217.109.154',
    '176.231.193.85',
    '57.43.4.46',
    '43.88.139.157',
    '157.169.48.157',
    '42.213.74.165',
    '231.23.177.172',
    '111.35.191.43',
    '216.50.74.25',
    '187.251.170.237',
    '48.186.184.163',
    '204.36.203.175',
    '171.113.188.12',
    '101.90.226.47',
    '15.23.23.19',
    '67.94.176.45',
    '24.105.135.118',
    '38.239.242.104',
    '134.42.204.248',
    '207.207.108.161',
    '27.25.169.89',
    '254.189.219.152',
    '149.245.219.88',
    '117.121.2.15',
    '181.129.36.180',
    '240.195.156.193',
    '61.122.66.47',
    '51.91.109.115',
    '232.160.245.135',
    '249.2.53.226',
    '124.181.1.125',
    '8.117.177.207',
    '180.120.33.209',
    '28.119.164.250',
    '84.169.23.69',
    '244.198.205.37',
    '25.9.162.148',
    '85.38.236.13',
    '194.85.133.131',
    '249.81.194.114',
    '20.80.125.207',
    '166.12.14.22',
    '201.185.76.58',
    '24.20.142.182',
    '166.80.175.130',
    '16.41.7.23',
    '106.212.106.105',
    '77.13.52.242',
    '209.9.58.173',
    '145.127.213.16',
    '161.168.223.17',
    '154.63.175.41',
    '149.120.29.80',
    '43.13.126.1',
    '112.53.174.47',
    '1.168.5.85',
    '240.159.87.107',
    '219.210.254.232',
    '215.121.212.197',
    '125.75.49.122',
    '227.127.232.253',
    '165.207.88.201',
    '214.116.83.212',
    '19.37.53.151',
    '112.24.211.10',
    '134.7.136.162',
    '110.41.42.91',
    '191.55.18.171',
    '147.103.22.139',
    '128.116.144.115',
    '157.148.88.90',
    '133.128.197.184',
    '79.111.176.134',
    '145.27.112.60',
    '101.184.221.208',
    '99.3.82.189',
    '161.48.162.248',
    '186.247.41.252',
    '196.148.188.191',
    '88.187.181.186',
    '141.166.236.227',
    '251.14.185.181',
    '187.40.242.39',
    '102.173.241.175',
    '17.214.143.72',
    '85.92.34.103',
    '76.116.129.6',
    '139.215.8.156',
    '45.190.137.35',
    '198.224.98.16',
    '115.120.104.93',
    '200.58.242.129',
    '223.95.219.117',
    '80.159.122.176',
    '51.52.166.44',
    '30.210.183.94',
    '43.182.134.64',
    '240.149.107.74',
    '137.167.61.114',
    '139.165.84.51',
    '15.198.137.131',
    '170.194.52.217',
    '121.210.43.50',
    '17.174.200.254',
    '137.142.226.62',
    '124.41.211.99',
    '1.183.113.104',
    '173.240.21.196',
    '157.15.149.112',
    '102.198.76.227',
    '32.83.16.24',
    '99.107.57.129',
    '73.70.159.28',
    '103.156.156.93',
    '214.166.7.62',
    '49.29.54.55',
    '139.54.3.63',
    '128.170.196.205',
    '39.178.85.220',
    '23.7.11.226',
    '103.221.188.216',
    '177.239.196.55',
    '14.119.250.242',
    '20.41.182.136',
    '218.62.206.235',
    '250.110.157.151',
    '141.241.248.130',
    '41.130.59.37',
    '229.86.58.119',
    '93.37.78.239',
    '164.39.80.137',
    '86.21.151.185',
    '137.38.251.122',
    '213.19.213.66',
    '84.19.253.9',
    '155.221.203.71',
    '196.173.23.244',
    '103.56.55.138',
    '155.182.5.254',
    '248.223.215.203',
    '152.236.136.231',
    '17.149.111.202',
    '122.19.99.110',
    '110.26.187.73',
    '4.228.83.83',
    '209.44.127.5',
    '241.38.26.85',
    '250.139.120.189',
    '7.148.117.54',
    '171.248.104.53',
    '2.241.40.179',
    '161.54.14.43',
    '162.252.239.144',
    '156.254.41.94',
    '168.118.142.138',
    '94.24.121.143',
    '213.29.193.99',
    '166.62.192.126',
    '231.177.76.217',
    '52.50.189.235',
    '160.243.235.173',
    '199.179.49.151',
    '191.165.99.160',
    '34.131.217.65',
    '5.132.111.113',
    '2.97.121.168',
    '47.81.208.222',
    '39.14.206.141',
    '254.203.73.171',
    '82.71.153.177',
    '55.181.151.150',
    '68.206.154.210',
    '147.203.123.95',
    '187.101.146.177',
    '213.208.181.196',
    '121.200.63.16',
    '190.132.7.137',
    '61.186.98.170',
    '14.164.45.108',
    '198.249.187.69',
    '129.243.231.45',
    '213.73.11.155',
    '219.49.249.138',
    '44.101.17.113',
    '220.28.35.71',
    '135.15.139.132',
    '68.117.33.34',
    '169.7.61.150',
    '208.250.180.217',
    '81.13.226.101',
    '67.112.159.49',
    '63.223.65.178',
    '92.147.159.228',
    '51.66.20.63',
    '218.37.118.183',
    '235.241.30.199',
    '127.226.225.104',
    '44.175.29.16',
    '11.144.164.182',
    '177.60.209.212',
    '59.234.124.99',
    '62.86.251.215',
    '208.180.43.46',
    '143.189.94.217',
    '142.171.111.213',
    '103.52.180.153',
    '49.144.9.29',
    '132.120.193.214',
    '121.35.184.192',
    '167.74.70.82',
    '41.36.63.131',
    '145.106.253.203',
    '252.83.91.36',
    '2.151.173.4',
    '183.112.205.98',
    '182.147.20.184',
    '25.59.86.253',
    '115.30.237.171',
    '222.116.179.184',
    '243.244.254.157',
    '203.218.168.81',
    '251.218.7.77',
    '158.48.241.135',
    '74.143.195.122',
    '23.51.83.28',
    '157.208.246.228',
    '244.163.136.206',
    '182.97.96.79',
    '249.67.85.95',
    '87.254.190.118',
    '228.206.119.141',
    '61.107.211.28',
    '117.11.175.26',
    '41.101.96.254',
    '108.179.189.195',
    '217.172.33.224',
    '137.138.98.77',
    '18.4.215.128',
    '139.79.92.115',
    '143.39.69.157',
    '53.193.108.246',
    '20.216.41.248',
    '67.162.82.153',
    '93.216.66.82',
    '120.177.206.27',
    '45.230.81.106',
    '146.174.160.57',
    '66.194.22.254',
    '83.90.136.181',
    '94.45.81.210',
    '122.115.71.80',
    '64.227.194.164',
    '198.185.155.199',
    '167.170.42.52',
    '248.237.70.222',
    '85.63.71.65',
    '209.209.6.83',
    '9.96.217.140',
    '17.35.155.228',
    '130.207.163.213',
    '117.161.199.86',
    '130.78.98.220',
    '191.15.74.100',
    '199.154.214.99',
    '176.42.225.208',
    '20.116.194.39',
    '8.178.81.91',
    '37.155.227.231',
    '132.105.85.195',
    '188.209.250.103',
    '230.15.174.201',
    '154.213.199.100',
    '238.97.32.47',
    '126.104.12.159',
    '94.34.101.176',
    '40.72.132.216',
    '242.18.66.18',
    '87.54.243.208',
    '109.237.115.16',
    '204.240.25.70',
    '142.121.187.108',
    '73.60.179.248',
    '21.114.217.230',
    '138.211.133.171',
    '193.152.142.63',
    '82.121.77.27',
    '84.173.152.54',
    '96.236.201.9',
    '141.112.184.138',
    '115.238.188.52',
    '44.161.174.251',
    '77.63.229.93',
    '239.1.59.77',
    '172.157.6.69',
    '154.77.30.60',
    '83.200.217.169',
    '235.72.22.135',
    '253.131.38.77',
    '162.177.226.241',
    '112.139.166.237',
    '127.72.72.59',
    '104.160.30.78',
    '66.204.3.33',
    '165.133.75.44',
    '170.1.209.101',
    '232.246.237.71',
    '121.160.120.199',
    '242.182.199.96',
    '110.112.180.9',
    '130.132.150.56',
    '73.45.71.230',
    '88.33.28.141',
    '200.151.238.36',
    '52.75.24.33',
    '175.113.109.125',
    '213.194.72.177',
    '188.119.129.181',
    '252.73.111.2',
    '175.108.234.140',
    '107.156.77.206',
    '72.16.107.192',
    '221.126.159.217',
    '71.33.193.20',
    '25.174.41.227',
    '107.95.173.68',
    '215.235.168.171',
    '118.140.239.19',
    '221.247.220.240',
    '39.103.72.63',
    '232.146.136.116',
    '62.176.118.137',
    '186.122.106.244',
    '122.40.59.177',
    '19.112.65.53',
    '156.140.85.120',
    '176.52.205.241',
    '101.159.133.156',
    '84.133.208.237',
    '148.32.139.222',
    '189.38.11.230',
    '232.206.40.254',
    '173.211.58.158',
    '36.108.26.189',
    '226.80.31.211',
    '5.182.34.217',
    '31.90.122.72',
    '75.112.1.21',
    '33.177.12.184',
    '183.87.116.45',
    '168.24.146.231',
    '11.44.63.226',
    '118.75.207.150',
    '4.174.31.247',
    '74.14.131.129',
    '98.159.212.43',
    '226.30.108.107',
    '229.190.33.59',
    '4.59.75.19',
    '81.202.194.232',
    '104.39.223.56',
    '98.134.123.245',
    '211.160.235.155',
    '215.175.10.33',
    '7.105.45.251',
    '117.7.46.41',
    '189.63.100.29',
    '247.75.167.206',
    '187.226.81.185',
    '33.62.56.211',
    '190.21.180.148',
    '174.158.158.245',
    '136.148.78.110',
    '100.46.154.245',
    '215.35.220.6',
    '253.170.235.148',
    '110.126.34.28',
    '63.213.85.145',
    '10.104.220.111',
    '229.111.147.171',
    '107.160.205.191',
    '178.54.103.164',
    '83.229.181.207',
    '101.234.145.59',
    '129.249.83.93',
    '189.78.209.47',
    '180.156.102.41',
    '124.31.231.66',
    '174.140.174.241',
    '97.30.147.50',
    '46.138.237.121',
    '44.11.150.192',
    '242.86.226.126',
    '156.165.174.172',
    '190.175.79.193',
    '115.174.156.182',
    '81.88.239.4',
    '112.228.33.159',
    '105.15.135.4',
    '83.11.250.38',
    '197.145.211.128',
    '218.220.234.11',
    '42.163.151.60',
    '201.30.177.14',
    '84.4.144.244',
    '222.141.14.236',
    '4.113.127.109',
    '217.233.191.108',
    '248.173.37.98',
    '122.244.135.72',
    '244.119.64.149',
    '129.110.38.67',
    '182.143.145.198',
    '173.21.90.28',
    '253.181.216.182',
    '191.169.227.145',
    '139.169.213.36',
    '121.235.132.102',
    '32.44.73.207',
    '151.157.249.88',
    '121.250.241.121',
    '219.124.8.41',
    '89.216.145.223',
    '8.74.105.151',
    '126.133.229.197',
    '215.195.224.100',
    '170.190.177.232',
    '15.173.48.78',
    '155.71.178.11',
    '107.195.20.23',
    '20.220.169.233',
    '173.200.78.125',
    '208.65.87.72',
    '150.124.158.66',
    '149.51.122.226',
    '228.156.195.36',
    '31.115.211.124',
    '90.235.128.227',
    '47.192.35.211',
    '180.41.146.67',
    '132.220.40.169',
    '180.20.186.254',
    '223.134.163.188',
    '28.109.184.217',
    '2.126.84.205',
    '168.242.77.146',
    '169.132.250.157',
    '28.105.56.231',
    '150.88.89.234',
    '52.139.56.156',
    '138.186.44.118',
    '178.29.14.111',
    '68.106.53.1',
    '87.218.122.32',
    '132.41.53.71',
    '225.136.60.110',
    '10.179.232.13',
    '19.226.21.27',
    '149.205.21.17',
    '169.172.194.228',
    '230.54.118.18',
    '102.163.7.141',
    '190.171.204.208',
    '9.136.160.211',
    '219.239.217.15',
    '82.28.81.120',
    '1.193.93.138',
    '1.28.214.59',
    '233.225.23.4',
    '212.75.242.218',
);

?>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 20.5.2005, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



IZ@TOP
Я думаю надо потестить на разных задачах.
PM MAIL Skype   Вверх
IZ@TOP
Дата 20.5.2005, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Opr, давай smile Вообще об этом разгоор был с некоторыми участниками 4-й международной конференции по РНР, там собствено и был разговор о тормозах функций in_array, array_unique и превосходстве array_flip'a.

PS Про оптимизацию там тем небыло. Это приватные беседы во время кофе брейков и перекуров smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 20.5.2005, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



IZ@TOP
А есть доклады с конференций?) Если знаешь - подкинь ссылочку. smile
PM MAIL Skype   Вверх
IZ@TOP
Дата 20.5.2005, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Opr, материалы конференции будут опубликованы вроде в июне.

Глянь тут http://www.phpconf.ru/sitedetnews.php?id=22
А программу наверное выложат сюда http://www.phpconf.ru/index.php?m=9&url=


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 20.5.2005, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Переписываю значит in_array на
Код

  function my_in_array($needle, $haystack)
  {
       $haystack = array_flip($haystack);
       if(isset($haystack[$needle]))
       {
           return true;
       }
       else
       {
           return false;
       }
  }

PM MAIL Skype   Вверх
nik118
Дата 20.5.2005, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.1.2005
Где: Латвия

Репутация: нет
Всего: нет



Спасибо всем за помощь , но я завалил тест на работу smile , оказывается можно всё зделать ещё быстрей с помощью функций, ip2long(), long2ip() , к ним я добавил твой совет IZ@TOP о array_flip , получилось вобще быстро....

Код

<?php 
/* ----------- V fail 'baza_ip.php' zanosim vse IP Latvii, j polinilsj i vnes tolko 4ast ----------
*/
include('baza_ip.php');
$result_count    = 0;
$lv_ip    = array_flip($lv_ip);

//---------------------Moj funkcija----------------------------//

function funkcija_check($ip)
{
    global $lv_ip;
$ip=ip2long($ip);
return (isset($lv_ip[$ip])) ? true : false;


}


//-------------------------------------------------------------//

$stat = array();
$start = time();
for( $i = 0; $i < 100000; $i++ ){
 $ip = '194.8.'.rand( 1,254 ).'.'.rand( 1,254 );
if(funkcija_check($ip))$result_count++;

}

$end = time();
echo $result_count;
echo '<br>';
print "\n".( $end - $start )."\n";



?>


Вот результаты на вхождения и время:
182
1

У вас приятно учится smile
Добавлено @ 11:40
Кстати такие конфиренции часто проходят, как можно стать учасником?

Это сообщение отредактировал(а) nik118 - 20.5.2005, 11:37
PM MAIL ICQ   Вверх
Opik
Дата 20.5.2005, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Всё тут: http://www.phpconf.ru/
PM MAIL Skype   Вверх
IZ@TOP
Дата 20.5.2005, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



nik118, для тестов производительность используй функции указанные в моем коде. иначе с секундами ты можешь разницу вообще не заметить, так как моя функция исполняется менее чем секунду разницы ты не увидишь.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 24.5.2005, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



подглючивает array_flip
PM MAIL Skype   Вверх
IZ@TOP
Дата 24.5.2005, 04:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Opr, аргументы?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0647 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.