+ Reply to Thread
Results 1 to 4 of 4

Thread: PHP - оптимизация кода

  1. #1
    AbreC's Avatar

    Question PHP - оптимизация кода

    Привет Всем! =)

    Сегодня я задам довольно странный вопрос (я мастер в этом деле ):
    Каким образом PHP-интерпретатор исполняет код? Переводит ли он скрипты в байт-код, а затем исполняет? Если нет, то как именно он их выполняет? Если да, то есть ли возможность подсмотреть в отладчике "генерируемый" им низкоуровневый код?

    Просто хотел посмотреть оптимизирует ли PHP-интерпретатор выражения вида:

    if( (expression_1) AND (expression_2) )
    { ... }

    а именно, пропускает ли интерпретатор вычисление второго выражения (expression_2) после того, как узнает, что первое (expression_1) дает FALSE.
    Ведь операция AND хотя бы с одним параметром FALSE по-любому дает FALSE

    Я так подумал, что если есть оптимизация (пропуск вычисления второго выражения при отрицательном результате первого), то можно прям так и записывать выражения. А если нет, то лучше убрать второе выражение внутрь блока if.

    Жду Ваших ответов

    WBR, AbreC =)
    You may stop this individual, but you can't stop us all... after all, we're all alike. © The Mentor (Phrack 7, File 3)

  2. #2
    root's Avatar

    Default Re: PHP - оптимизация кода

    Каким образом PHP-интерпретатор исполняет код? Переводит ли он скрипты в байт-код, а затем исполняет? Если нет, то как именно он их выполняет? Если да, то есть ли возможность подсмотреть в отладчике "генерируемый" им низкоуровневый код?
    Транслирует в байт-код. Подсмотреть можно, сам не смотрел - не интересно.

    Просто хотел посмотреть оптимизирует ли PHP-интерпретатор выражения вида:

    if( (expression_1) AND (expression_2) )
    { ... }
    Разработчики трансляторов и компилятор профессионалы знающие свое дело, поэтому все подобные конструкции учтены.

    Жду Ваших ответов
    Для проверки используй следующий код:
    Code:
    <?php
    
    function get_sec()
    {
        $time = microtime();
        $time = explode(" ",$time);
        $time = $time[0] + $time[1];
        return $time;
    }
    
    
    $start_time = get_sec();
    
    if(sleep(1) AND sleep(1))
    {
      // Оба sleep'a возвращают FALSE.
    }
    
    $delta_time = get_sec() - $start_time;
    
    echo "$delta_time <br>";
    
    
    $start_time = get_sec();
    
    if(!sleep(1) AND sleep(1))
    {
      // Первый sleep возвращает TRUE, второй FALSE.
    }
    
    $delta_time = get_sec() - $start_time;
    
    echo "$delta_time";
    
    ?>
    Last edited by root; 14-01-2012 at 18:10.
    Успех – это путь от провала до провала без потери энтузиазма. (В. Черчиль)

    Не бойся идти медленно, бойся остановиться. (Китайская пословица)

    When you lose fun and start doing things only for the payback, you're dead. (c) TCLH (Phrack 65, Intro)

  3. Пользователь сказал cпасибо:
    AbreC (15-01-2012)
  4. #3
    AbreC's Avatar

    Default Re: PHP - оптимизация кода

    Спасибо, root, за замечательный ответ =)
    You may stop this individual, but you can't stop us all... after all, we're all alike. © The Mentor (Phrack 7, File 3)

  5. #4
    AbreC's Avatar

    Default Re: PHP - оптимизация кода

    Более подробно по теме:
    http://www.xakep.ru/post/56672/
    You may stop this individual, but you can't stop us all... after all, we're all alike. © The Mentor (Phrack 7, File 3)

  6. Пользователь сказал cпасибо:
    root (18-01-2012)
+ Reply to Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:35
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org