<rmcreative>

RSS

inPHP.org, уровень 6

10 ноября 2008

Радостное событие для всех, кому понравился тест inPHP.org.

Доступна аккредитация шестого уровня «Свободное владение языком PHP. Способность принимать нестандартные решения».

Продолжаем тестироваться

Комментарии RSS

  1. №860
    Антон Исайкин
    Антон Исайкин 12 нояб. 2008 г., 14:14:22

    Мда, клиника.

    Вопрос:

    *Какое из данных выражений является самым медленным по времени выполнения?

    $a = $Arr['one']

    $a = $Arr["one"]

    $a = $Arr[one]*

    Ответ:

    Все зависит от one, если это константа, то все варианты равносильны, если это ключ массива без кавычек, то это ворнинг, который, разумеется будет медленнее. Итог: не достаточно данных.

    Вопрос:

    *Какой из фрагментов кода выполнится быстрее, если $a - строка?

    1.

    for ($i=1; $i<=100; $i++) {

    $b .= $a;

    }

    2.

    for ($i=1; $i<=100; $i++) {

    $b = $b.$a;

    }

    3.

    for ($i=1; $i<=100; $i++) {

    $b = "$b$a";

    }*

    Ответ:

    Мне искренне жаль человека, который в php таким образом оптимизирует свое приложение.

    Короче говоря, если первые 5 тестов были еще ничего, то 6-й это бесплодные потуги придумать "сложные" вопросы.

  2. №861
    Sam
    Sam 12 нояб. 2008 г., 14:16:53

    Почему клиника? Я ответил сразу правильно:

    Какое из данных выражений является самым медленным по времени выполнения?

    $a = $Arr[one]

    Какой из фрагментов кода выполнится быстрее, если $a - строка?

    $b = $b.$a;

    Со вторым потом засомневался и проверил.

  3. №862
    Антон Исайкин
    Антон Исайкин 12 нояб. 2008 г., 16:10:35

    В чем клиника, я пояснил дважды под словом "Ответ:" :-)

  4. №863
    Sam
    Sam 12 нояб. 2008 г., 16:34:37

    Все зависит от one, если это константа, то все варианты равносильны

    Этого вообще предположить никак нельзя:

    define('one', 'two');
    echo $Arr[one];
    echo $Arr['one'];

    Мне искренне жаль человека, который в php таким образом оптимизирует свое приложение.

    Да, это конечно не самый лучший способ, но если у нас цикл по 200000 элементов, на этом можно выиграть. Да и вообще чем плох сам вопрос? Тут же не спрашивается, насколько оправдана оптимизация…

  5. №869
    Spirit
    Spirit 18 нояб. 2008 г., 18:20:13

    Какой из фрагментов кода выполнится быстрее, если $a - строка?

    $b = $b.$a;

    Со вторым потом засомневался и проверил.

    Странно, что у вас быстрее этот вариант. Я протестировал на никсах, вот результаты

    0.0001649857ms - $b = $b.$a;

    0.0000700951ms - $b .= $a;

    0.0004069805ms - $b = "$b$a";

    Так что даже не знаю, что писать в тесте :)

  6. №870
    Sam
    Sam 18 нояб. 2008 г., 18:22:35

    Spirit

    Там вроде тест поправили. Раньше верным был $b = $b.$a. Теперь скорее всего $b .= $a. Оно вообще себя ведёт по-разному в разных ОС при различных условиях.

  7. №871
    Spirit
    Spirit 18 нояб. 2008 г., 18:54:32

    ну теперь хоть буду знать, что у меня ошибка была в другом месте, спасибо

    а на виндах вообще странно - раз через 10 и "$a$b" быстрее получается :)

  8. №875
    Антон Исайкин
    Антон Исайкин 19 нояб. 2008 г., 14:00:00

    Sam, define('one', 'one');

  9. №907
    DeadLy
    DeadLy 26 нояб. 2008 г., 9:40:02

    А 7-й ещё не открыли? или это уже платно?

  10. №908
    Sam
    Sam 26 нояб. 2008 г., 10:43:09

    Седьмой вроде тоже бесплатный. Но его ещё нет.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.