За последние 24 часа нас посетили 22542 программиста и 1202 робота. Сейчас ищут 692 программиста ...

Вот оцените - исходники моей админки

Тема в разделе "Вопросы от блондинок", создана пользователем Ruzzz, 17 фев 2008.

  1. sword dancer

    sword dancer Активный пользователь

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
    я, кстати, после заполнения реестра очищаю почти все суперглобальные массивы, чтобы небыло соблазна их заюзать в модуле :)
    использование реестра даёт следующие преимущества:
    1. простая подмена состояния (назначение - виртуальные инклуды и модульные тесты).
    2. централизованное хранение стэка состояний с возможностью вывести его дамп в любой момент.
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    слова-то какие знаем... откудо ветер дует?
     
  3. sword dancer

    sword dancer Активный пользователь

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
    всмысле? о_0 палюсь? :)
     
  4. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    array_map "тормозная" функция. Перебор работает быстрее.
    PHP:
    1. <?php foreach ($array as &$v) $v = (int)$v;
     
  5. Ruzzz

    Ruzzz Активный пользователь

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    Это у меня от плохого знания PHP - исправлюсь.
    Ну вообщем в моей ситуации массив не обладает такими свойствами, но спасибо! Думаю foreach все же лучше.

    Про array_map, тоже думаю - вызывать для каждого элемента функцию это "тяжело".
     
  6. Ruzzz

    Ruzzz Активный пользователь

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    насколько я понял можно так:
    PHP:
    1.  
    2.  <?php
    3. function ArrayToInt($arr) {
    4.   for ($i = 0; $i < count($arr); $i++) $arr[$i] = (int)$arr[$i];
    5.   return $arr;
    6. }
    7.  
     
  7. Ruzzz

    Ruzzz Активный пользователь

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    PHP:
    1.  
    2. <?
    3.  
    4.     function FillArr() {
    5.         unset($res);
    6.         for ($i=0; $i < 100000; $i++) {
    7.             $res[$i] = (string)$i;
    8.         }
    9.         return $res;
    10.     }
    11.  
    12.     function ArrayToInt_1($arr) {
    13.         for ($i = 0; $i < count($arr); $i++) $arr[$i] = (int)$arr[$i];
    14.         return $arr;
    15.     }
    16.    
    17.     function ArrayToInt_2($arr) {
    18.         foreach ($arr as &$v) $v = (int)$v;
    19.         return $arr;
    20.     }
    21.  
    22.     function ArrayToInt_3($arr) {
    23.         return array_map("intval",$arr);
    24.     }
    25.  
    26.     /*
    27.     print_r(ArrayToInt_1(FillArr())); echo '<br />';
    28.     print_r(ArrayToInt_2(FillArr())); echo '<br />';
    29.     print_r(ArrayToInt_3(FillArr())); echo '<br />';
    30.     */
    31.        
    32.     $arr = FillArr();
    33.     $time_start = microtime(1);
    34.     $arr = ArrayToInt_1($arr);
    35.     $time_end = microtime(1);
    36.     $time = $time_end - $time_start; echo 'ArrayToInt_1: '.$time.' секунд<br />';
    37.    
    38.     $arr = FillArr();
    39.     $time_start = microtime(1);
    40.     $arr = ArrayToInt_2($arr);
    41.     $time_end = microtime(1);
    42.     $time = $time_end - $time_start; echo 'ArrayToInt_2: '.$time.' секунд<br />';
    43.    
    44.     $arr = FillArr();
    45.     $time_start = microtime(1);
    46.     $arr = ArrayToInt_3($arr);
    47.     $time_end = microtime(1);
    48.     $time = $time_end - $time_start; echo 'ArrayToInt_3: '.$time.' секунд<br />';
    49. ?>
    50.  
    Результат:
    Код (Text):
    1.  
    2. ArrayToInt_1: 0.197717905045 секунд
    3. ArrayToInt_2: 0.116955041885 секунд
    4. ArrayToInt_3: 0.159669876099 секунд
    Повторял несколько раз, ArrayToInt_2 работает быстрее
     
  8. Ruzzz

    Ruzzz Активный пользователь

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    ах да :) , попробывал так:
    PHP:
    1.  
    2. <?
    3.     function ArrayToInt_1($arr) {
    4.         $len = count($arr);
    5.         for ($i = 0; $i < $len; $i++) $arr[$i] = (int)$arr[$i];
    6.         return $arr;
    7.     }
    8. ?>
    9.  
    ArrayToInt_1 - стала гораздо ближе к 1 месту :) но все равно ArrayToInt_2 - лидирует
     
  9. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Экономите на спичках, господа... для чего нужна такая функция, по идее? Для очистки входных данных. У вас на каждой странице сайта принимается массив входных данных из 100 тыс. элементов? Нет. На массиве из 100 элементов разница будет заметна? Нет. А если нет разницы, зачем писать больше? ;) Да и разница в скорости оказывается пустячная.
     
  10. Ruzzz

    Ruzzz Активный пользователь

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    Dagdamor
    :) Я согласен!
     
  11. Ruzzz

    Ruzzz Активный пользователь

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1