За последние 24 часа нас посетили 20359 программистов и 1091 робот. Сейчас ищут 719 программистов ...

Кружок любопытных извращенцев :)

Тема в разделе "Прочие вопросы по PHP", создана пользователем Psih, 9 июн 2009.

  1. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Пора сделать закреплённый топик для эксперемнтов с PHP - бенчмарки, тесты на поведение и.т.д. Обсуждение только в тему тестов. Никаких вопросов "Зачем?", "Нафиг надо?" и.т.д. Не нравится - не читаем.

    Не забываем что можно постить нестандартные или нетривиальные решения. Они должны быть действительно одим из:
    а). Странное.
    б). Неочевидное или "недокументированная фича"
    в). Что-то достаточно сложное, что бы большая часть обитателей форума сломала мозг.

    В первом сообщении буду прописывать линки на очередные тесты в теме.

     
    Cyusik нравится это.
  2. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Мои первые 5 копеек.

    Цель - проверить скорость работы switch () { case } vs if ( || ) vs in_array().

    Код (PHP):
    1. <?php
    2. define('MAX', 1000000);
    3. echo 'SWITCH<br />';
    4. foreach (array('blabla', 'uhuhuh', 'huhuhu') as $v) {
    5.     $time = microtime(true);
    6.     for ($i = 0; $i < MAX; ++$i) {
    7.         switch ($v) {
    8.             case 'blabla':
    9.             case 'uhuhuh':
    10.                 break;
    11.             case 'huhuhu':
    12.                 break;
    13.         }
    14.     }
    15.     echo $v, ': '.number_format((microtime(true) - $time), 10, '.', '').'<br />';
    16. }
    17.  
    18. echo '<br />'.'<br />'.'IF'.'<br />';
    19.  
    20. foreach (array('blabla', 'uhuhuh', 'huhuhu') as $v) {
    21.     $time = microtime(true);
    22.     for ($i = 0; $i < MAX; ++$i) {
    23.         if ($v == 'blabla' || $v == 'uhuhuh') {
    24.         } else {
    25.         }
    26.     }
    27.     echo $v, ': '.number_format((microtime(true) - $time), 10, '.', '').'<br />';
    28. }
    29.  
    30. echo '<br />'.'<br />'.'IF (look for less)'.'<br />';
    31.  
    32. foreach (array('blabla', 'uhuhuh', 'huhuhu') as $v) {
    33.     $time = microtime(true);
    34.     for ($i = 0; $i < MAX; ++$i) {
    35.         if ($v == 'huhuhu') {
    36.         } else {
    37.         }
    38.     }
    39.     echo $v, ': '.number_format((microtime(true) - $time), 10, '.', '').'<br />';
    40. }
    41.  
    42. echo '<br />'.'<br />'.'IN_ARRAY'.'<br />';
    43.  
    44. foreach (array('blabla', 'uhuhuh', 'huhuhu') as $v) {
    45.     $time = microtime(true);
    46.     for ($i = 0; $i < MAX; ++$i) {
    47.         if (in_array($v, array('blabla', 'uhuhuh'))) {
    48.         } else {
    49.         }
    50.     }
    51.     echo $v, ': '.number_format((microtime(true) - $time), 10, '.', '').'<br />';
    52. }
    53.  
    54. echo '<br />'.'<br />'.'IN_ARRAY (array initialised before)'.'<br />';
    55. foreach (array('blabla', 'uhuhuh', 'huhuhu') as $v) {
    56.     $time = microtime(true);
    57.     $arr = array('blabla', 'uhuhuh', 'huhuhu');
    58.     for ($i = 0; $i < MAX; ++$i) {
    59.         if (in_array($v, $arr)) {
    60.         } elseif ($v == 'huhuhu') {
    61.         }
    62.     }
    63.     echo $v, ': '.number_format((microtime(true) - $time), 10, '.', '').'<br />';
    64. }
    65. echo '<br />'.'<br />'.'---------- BONUS !!! --------'.'<br />';
    66.  
    67. echo 'BIG SWITCH<br />';
    68. foreach (array('blabla', 'uhuhuh', 'huhuhu') as $v) {
    69.     $time = microtime(true);
    70.     for ($i = 0; $i < MAX; ++$i) {
    71.         switch ($v) {
    72.             case 'blabla': break;
    73.             case  'awegfqwegqwerg': break;
    74.             case  'aergqerghweth': break;
    75.             case  'afa': break;
    76.             case  'asdfsd': break;
    77.             case  'asdf': break;
    78.             case  'fwefwef': break;
    79.             case 'adfgasdf': break;
    80.             case  'asdf': break;
    81.             case  'asdrt': break;
    82.             case  'gqererqrwe': break;
    83.             case  '1': break;
    84.             case  2: break;
    85.             case 3: break;
    86.             case 4: break;
    87.             case  'uhuhuh': break;
    88.             case 5: break;
    89.             case 6: break;
    90.             case 7: break;
    91.             case 8: break;
    92.             case 9: break;
    93.             case 0: break;
    94.             case 122: break;
    95.             case 1234: break;
    96.             case 241254: break;
    97.             case 2345: break;
    98.             case 234154: break;
    99.             case 241234: break;
    100.             case 1241234: break;
    101.             case 124123423: break;
    102.             case 41234: break;
    103.             case 23: break;
    104.             case 4123423: break;
    105.             case 4: break;
    106.             case 56: break;
    107.             case 2: break;
    108.             case 2: break;
    109.             case 4: break;
    110.             case  'huhuhu': break;
    111.         }
    112.     }
    113.     echo $v, ': '.number_format((microtime(true) - $time), 10, '.', '').'<br />';
    114. }
    115.  
    116. echo '<br />'.'<br />'.'BIG IN_ARRAY (array initialised before)'.'<br />';
    117. foreach (array('blabla', 'uhuhuh', 'huhuhu') as $v) {
    118.     $time = microtime(true);
    119.     $arr = array('blabla', 'awegfqwegqwerg', 'aergqerghweth', 'afa', 'asdfsd', 'asdf', 'fwefwef',
    120.                 'adfgasdf', 'asdf', 'asdrt', 'gqererqrwe', '1', 2,3,4,'uhuhuh',5,6,7,8,9,0,122,1234,241254,2345,234154,241234,
    121.                 1241234,124123423,41234,23,4123423,4,56,2,2,4, 'huhuhu');
    122.     for ($i = 0; $i < MAX; ++$i) {
    123.         if (in_array($v, $arr)) {
    124.         } else {
    125.         }
    126.     }
    127.     echo $v, ': '.number_format((microtime(true) - $time), 10, '.', '').'<br />';
    128. } 
    Результат:
    Код (Text):
    1. SWITCH
    2. blabla: 0.2071468830
    3. uhuhuh: 0.3163371086
    4. huhuhu: 0.3905041218
    5.  
    6.  
    7. IF
    8. blabla: 0.2027728558
    9. uhuhuh: 0.2863938808
    10. huhuhu: 0.3096029758
    11.  
    12.  
    13. IF (look for less)
    14. blabla: 0.1977119446
    15. uhuhuh: 0.1971809864
    16. huhuhu: 0.1936748028
    17.  
    18.  
    19. IN_ARRAY
    20. blabla: 0.6297330856
    21. uhuhuh: 0.6948361397
    22. huhuhu: 0.6891119480
    23.  
    24.  
    25. IN_ARRAY (array initialised before)
    26. blabla: 0.3601179123
    27. uhuhuh: 0.4338660240
    28. huhuhu: 0.5059688091
    29.  
    30.  
    31. ---------- BONUS !!! --------
    32. BIG SWITCH
    33. blabla: 0.2016208172
    34. uhuhuh: 1.4647359848
    35. huhuhu: 1.8207859993
    36.  
    37.  
    38. BIG IN_ARRAY (array initialised before)
    39. blabla: 0.3605790138
    40. uhuhuh: 1.4366469383
    41. huhuhu: 1.7227311134
    Отсюда выводы:
    1). switch case тоже самое что if () elseif () elseif ..... else; Если не надо сравнивать слишком уж много значений - лучше if
    2). Чем проще условие - тем быстрее. Лучше проверить на false, чем на true || true
    3). in_array - это долго при малом кол-ве элементов
    4). При большом кол-ве элементов если вам нужен один конкретный - проще сделать in_array - разница в скорости мизерная.
     
  3. alexey_baranov

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

    С нами с:
    3 фев 2009
    Сообщения:
    647
    Симпатии:
    0
    Адрес:
    Сургут
    О! пост удалили. Впервые тут такое. Скоро бояться буду что- то написать. Вдруг забанят.

    так ты Важно: то убери, чтоб не моячило. Не позорь форум. Важно- это то что всем полезно и может пригодиться, а кружок извращенцев, где ты сам с собой общаешься на тему что быстрее foreach или inarray- это не важно.
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Предлогаю ещё сюда собирать нестандартные решения стандартных задач
     
  5. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    alexey_baranov
    Подобных тем было уже не одна, и не две, и даже не 3 по разным исследованиям. Ну а немного юмора в заголовке не помешает самому топику.
    Тему зачистил потому, что hight попросил.
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Цель: проверить скорость перебора массива двумя способами.
    Код (PHP):
    1. <?php
    2. function timer()
    3. {
    4.         static $mark = null;
    5.         if ($mark === null)
    6.         {
    7.                 $mark = microtime(0);
    8.         }
    9.         else 
    10.         {
    11.                 $res = microtime(0) - $mark;
    12.                 $mark = null;
    13.                 return substr($res, 0, 6);
    14.         }
    15. }
    16.  
    17. /**
    18.  * Сравнение скорости перебора массива двумя способами способами:
    19.  * циклом foreach и циклом while с функцией each.
    20.  */
    21.  
    22. // Создаем массив с весом элементов 1Мб
    23. $array = array();
    24. for ($i=0; $i<1000000; $i++)
    25. {
    26.         $array[$i] = 1;
    27. }
    28.  
    29. //Вариант первый
    30. timer();
    31. foreach ($array as $k => $v)
    32. {
    33.         $var = $v;
    34. }
    35. echo 'Вариант с foreach: '.timer().' сек<br>';
    36.  
    37. //Вариант второй:
    38. timer();
    39. while (list($k, $v) = each($array))
    40. {
    41.     $var = $v;
    42. }
    43. echo 'Вариант с while each: '.timer().' сек<br>';
    44. ?>
    средний результат:
    • Вариант с foreach: 0.2438 сек
      Вариант с while each: 1.7000 сек[/list:u]
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Попробуй ещё ради прикола
    Код (PHP):
    1. <?
    2. function _foreach($arr){
    3.     $var=current($arr);
    4.     if(next($arr)){
    5.           _foreach($arr);
    6.     }
    7.    return;
    8. }
    9. ?>
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 35 bytes) in W:\host\whileeach.php on line 20 =)
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Наибредовейшая задача: sleep vs. usleep
    Цель: выяснить, какя функция спит дольше, ну, или, точнее:
    Код (PHP):
    1. <?php
    2. function timer()
    3. {
    4.         static $mark = null;
    5.         if ($mark === null)
    6.         {
    7.                 $mark = microtime(1);
    8.         }
    9.         else 
    10.         {
    11.                 $res = microtime(1) - $mark;
    12.                 $mark = null;
    13.                 return substr($res, 0, 6);
    14.         }
    15. }
    16.  
    17. timer();
    18. for ($i=0;$i<10;$i++)
    19. {
    20.         sleep(1);
    21. }
    22. echo 'Sleep: '.timer().' cек<br>';
    23.  
    24. timer();
    25. for ($i=0;$i<10;$i++)
    26. {
    27.         usleep(1000000);
    28. }
    29. echo 'Usleep: '.timer().' сек';
    30. ?>
    Полученые результаты:
    • Sleep: 9.9896 cек
      Usleep: 10.000 сек[/list:u]
      • Sleep: 9.9949 cек
        Usleep: 9.9971 сек[/list:u]
        • Sleep: 9.9855 cек
          Usleep: 9.9999 сек[/list:u]

          Вывод: используйте usleep для повышения точности работы скрипта, и sleep - для ускорения работы скрипта :lol:
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    [vs]
    хм, где зациклилось?
     
  11. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Тут не Each и while тормозит, а list

    Да и вообще, я бы предпочел current...
     
  12. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Решил выяснить, что же быстрей для выбора последней записи в таблице (100к):
    1. Выбрать через ORDER BY DESC LIMIT 1
    2. $var = MAX(id), SELECT WHERE id=$var
    3. SELECT WHERE id = (SELECT MAX(id)

    Код (PHP):
    1. <?php
    2. for ($x = 1; $x <= 100000; $x++) {
    3.     $start_t = microtime(true);
    4.  
    5.     $mysqli->query('SELECT SQL_NO_CACHE * FROM tst ORDERY BY `id` DESC LIMIT 1');
    6.  
    7.     $times[] = microtime(true) - $start_t;
    8.  
    9. }
    10. $t1 = array_sum($times) / 100000;
    11. echo $t1."\n";
    12.  
    13. unset($times);
    14.  
    15. $times = array();
    16. for ($x = 1; $x <= 100000; $x++) {
    17.     $start_t = microtime(true);
    18.  
    19.     $id = $mysqli->query('SELECT SQL_NO_CACHE MAX(`id`) FROM tst')->fetch_array();
    20.     $mysqli->query('SELECT SQL_NO_CACHE * FROM tst WHERE `id`='.$id[0]);
    21.  
    22.     $times[] = microtime(true) - $start_t;
    23.  
    24. }
    25. $t2 = array_sum($times) / 100000;
    26. echo $t2."\n";
    27. echo $t2 - $t1."\n"."\n";
    28. $times = array();
    29. for ($x = 1; $x <= 100000; $x++) {
    30.     $start_t = microtime(true);
    31.  
    32.     $mysqli->query('SELECT SQL_NO_CACHE * FROM tst WHERE `id`=(SELECT SQL_NO_CACHE MAX(`id`) FROM tst)');
    33.  
    34.     $times[] = microtime(true) - $start_t;
    35.  
    36. }
    37. $t3 = array_sum($times) / 100000;
    38. echo $t3."\n"; 
    Результаты:
    Код (Text):
    1. №1: 0.0006240371465683
    2. №2: 0.0018119875121117
    3. №3. 0.001077238035202
    4.  
    5. №2 - №1: 0.0011879503655434
    Вложенный запрос в этом варианте оказался быстрее, чем тот, что использует PHP. Интересно, в более сложных запросах тоже так?

    Командная строка php, WinXP, Amd Duron 1.6
     
  13. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Системы пишите. От них может много чего зависить.
     
  14. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Kreker
    Вобще-то самым быстрым оказался варант с ORDER BY LIMIT (я результаты в теги code оформил), причём быстрее сильно.
    Объяснить это на самом деле очень просто - PRIMARY KEY индекс упорядочен, так что MySQL просто посмотрел в его конец и выбрал данные.
     
  15. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Эксперименты с memory usage и serialize().
    Цель: нужно было узнать насколько имеет смысл приводить данные к int/float при сериализации данных. Конкретно приминительно к memcache для снижения трафика.

    Код (PHP):
    1. <?php
    2. $test = array();
    3. for ($i = 0; $i < 1000; ++$i) {
    4.     $test[] = array('id' => 105, 'name' => 'Psihius', 'age' => 29, 'upd_time' => 1245076167, 'pht_id' => 16);
    5. }
    6.  
    7. $memory = memory_get_usage();
    8. $string = serialize($test);
    9. echo 'Memory: '.(memory_get_usage() - $memory).PHP_EOL;
    10. echo 'Strlen: '.strlen($string).PHP_EOL.PHP_EOL.PHP_EOL;
    11. unset($test, $string);
    12.  
    13. $test = array();
    14. for ($i = 0; $i < 1000; ++$i) {
    15.     $test[] = array('id' => '105', 'name' => 'Psihius', 'age' => '29', 'upd_time' => '1245076167', 'pht_id' => '16');
    16. }
    17. $memory = memory_get_usage();
    18. $string = serialize($test);
    19. echo 'Memory: '.(memory_get_usage() - $memory).PHP_EOL;
    20. echo 'Strlen: '.strlen($string).PHP_EOL.PHP_EOL.PHP_EOL;
    21. unset($test, $string);
    22.  
    23.  
    24. $test = array();
    25. for ($i = 0; $i < 1000; ++$i) {
    26.     $test[] = array('id' => '105', 'name' => 'Psihius', 'age' => '29', 'upd_time' => '1245076167', 'pht_id' => '16');
    27. }
    28. $memory = memory_get_usage();
    29. foreach ($test as $k => $v) {
    30.     foreach ($v as $key => $val) {
    31.         if (is_numeric($val)) {
    32.             $test[$k][$key] = (int)$val;
    33.         }
    34.     }
    35. }
    36. unset($k, $v, $key, $val);
    37. $memory2 = memory_get_usage();
    38. $string = serialize($test);
    39. echo 'Memory: '.(memory_get_usage() - $memory).PHP_EOL;
    40. echo 'Memor2: '.(memory_get_usage() - $memory).PHP_EOL;
    41. echo 'Strlen: '.strlen($string).PHP_EOL.PHP_EOL.PHP_EOL;
    42.  
    Результат:
    Код (Text):
    1. Memory: 176800
    2. Strlen: 112899
    3.  
    4.  
    5. Memory: 193296
    6. Strlen: 129899
    7.  
    8.  
    9. Memory: 103792
    10. Memor2: 103792
    11. Strlen: 112899
    Вывод: однозначно стоит приводить данные к int/float если они таковыми являются. На данном примере позволяет съекономить 16КБ при серализации данных.
    Внутренности PHP судя по всему хранят данные в едином формате и к нужному типу приводится при обращении, так что забивать голову приведениями типов в нутри приложения для оптимизации использования памяти не нужно.
     
  16. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    могу задачку подкинуть:
    выяснить что быстрее Записать\Чтение массива serialize\unserialize или var_export\include
     
  17. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я не спорю -) Я думал, что это очевидно, поэтому описал, кто быстрее из последних 2х вариантов.
     
  18. klik

    klik Guest

    Проверьте, что бысрее, инициализация переменных до выполнения скрипта, или во время!
     
  19. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    klik
    Переменные в любом случае инициализируются в процессе выполнения скрипта.
     
  20. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Тест: влияние длины переменных на скорость выполнения скрипта.
    Существует миф, что переменные длинее 7 символов тормозят работу скрипта, а длинее 32 - еще сильнее.
    В цликле for выполняется инициализация перемнной, присвоение значения и удаление с помощью unset. Циклов - 100000. Символ доллара не учитывается.

    Длина 5 символов:

    • Выполнено за 0.5471 сек.
      Выполнено за 0.5340 сек.
      Выполнено за 0.5444 сек.
      [/list:u]

      Длина 10 символов:

      • Выполнено за 0.6092 сек.
        Выполнено за 0.5950 сек.
        Выполнено за 0.6126 сек.
        [/list:u]

        Длина 40 символов:

        • Выполнено за 0.8944 сек.
          Выполнено за 0.8900 сек.
          Выполнено за 0.8976 сек.
          [/list:u]

          Длина имен переменных действительно влияет на быстродействие скрипта!

          ЗЫ.
          Код простой:
          Код (PHP):
          1. <?php
          2. for ($i=0; $i<1000000; $i++)
          3. {
          4.      $myvarmyvarmyvarmyvarmyvarmyvarmyvarmyvar;
          5.      $myvarmyvarmyvarmyvarmyvarmyvarmyvarmyvar = 1024;
          6.      unset($myvarmyvarmyvarmyvarmyvarmyvarmyvarmyvar);
          7. } 
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Тест: влияние подавления ошибок на быстродействие скрипта.

    Код без ошибок:
    Код (PHP):
    1. <?php
    2. for ($i=0; $i<10000; $i++)
    3. {
    4.      $var = array();
    5.      key_exists('key', $var);
    6.      unset ($var);
    7. } 
    • Выполнено за 0.0146 сек. [/list:u]
      Теперь получим ошибку самого распространенного типа - Notice. Обычно эту ошибку подавляют символом @:
      Код (PHP):
      1. <?php
      2. for ($i=0; $i<10000; $i++)
      3. {
      4.     $var = array();
      5.     @key_exists($var['key'], $var);
      6.     unset($var);
      7. } 
      • Выполнено за 0.0456 сек.[/list:u]
        В 3 раза медленнее, чем без Notice! Еще хуже ситуация, если допускать ошибки типа Warning:
        Код (PHP):
        1. <?php
        2. for ($i=0; $i<10000; $i++)
        3. {
        4.      @key_exists('key', $var);
        5.      unset ($var);
        6. } 
        • Выполнено за 0.1339 сек.[/list:u]
          Падение производительности скрипта - 900%!

          P.S. На самом деле, тормозит не подавление ошибки а её генерация - символ @ лишь подавляет вывод ошибки на экран, но php её все равно обрабатывает и записывает в лог.
     
  22. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    [vs], он не из-за нотиса тормозит, а из-за варнинга: у array_key_exists() вторым параметром должен быть массив.
     
  23. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    lexa
    Спасибо, подправил.
     
  24. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Какого скрипта? Одной операции.
     
  25. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Ну, я замерял ведь скорость всего приведеного скрипта ;-) В целом, конечно, да, одной операции, но чем больше скрипт, тем больше в нем может быть таких операций.