ФорумПрограммированиеPHP для идиотов → Benchmark: ECHO VS PRINT

Benchmark: ECHO VS PRINT

  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 25 августа 2011 г. 6:40


    echo быстрее, чем print.


    Решил провести собственные исследования:

    use Benchmark qw(:all);
    # подсветка Ruby подходит для Perl =)

    our $text = 'A' x 4000;

    sub echotest {
    my $result = qx!php -r "\$i=0; while(\$i<10000){echo $text; \$i++;}"!;
    }

    sub printtest {
    my $result = qx!php -r "\$i=0; while(\$i<10000){print $text; \$i++;}"!;
    }

    cmpthese(1, {
    testecho => sub { echotest($text) },
    testprint => sub { printtest($text) },
    });


    Перед тестом я выполнил в командной строке:
    php -r "echo 1; print 1;"

    Чтобы php слегка "вгрузился" в память.

    Первый запуск:
    Rate testecho testprint
    testecho 1.36/s – -4%
    testprint 1.42/s 4% –

    print выйграл у echo, обогнав его на 4%

    Второй запуск:
    Rate testecho testprint
    testecho 1.56/s – -2%
    testprint 1.60/s 2% –

    print выйграл у echo, обогнав его на 2%

    Третий запуск:
    Rate testecho testprint
    testecho 1.42/s – -0%
    testprint 1.42/s 0% –

    ничья

    Четверый запуск:
    Rate testecho testprint
    testecho 1.42/s – -0%
    testprint 1.42/s 0% –

    ничья

    Пятый запуск:
    Rate testprint testecho
    testprint 1.33/s – -6%
    testecho 1.42/s 7% –

    echo выйграл у print, обогнав его на 7%

    Шестой запуск:
    Rate testprint testecho
    testprint 1.42/s – -24%
    testecho 1.88/s 32% –

    echo выйграл у print, обогнав его на 32%

    Седьмой запуск:
    Rate testecho testprint
    testecho 1.60/s – -5%
    testprint 1.68/s 5% –

    print выйграл у echo, обогнав его на 5%

    Восьмой запуск:
    Rate testecho testprint
    testecho 1.31/s – -14%
    testprint 1.52/s 17% –

    print выйграл у echo, обогнав его на 17%

    Девятый запуск:
    Rate testecho testprint
    testecho 1.60/s – -0%
    testprint 1.60/s 0% –

    ничья

    Десятый запуск:
    Rate testprint testecho
    testprint 1.49/s – -7%
    testecho 1.60/s 8% –

    echo выйграл у print, обогнав его на 8%

    Итого было 10 запусков, print выйграл 4 раза, echo выйграл 3 раза, ничья была 3 раза.

    Если заглянуть в исходники:
    void echo ( string $arg1 [, string $… ] )
    int print ( string $arg )

    Собственно что делает echo - он суммирует все аргументы и выполняет print. =\
    Как видно - echo и print держатся примерно на одном уровне по скорости выполнения и особой разницы в их использовании нету.

    Кто может доказать обратное?
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 25 августа 2011 г. 6:44, спустя 4 минуты 38 секунд

    Чего от скуки только не делают…
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 25 августа 2011 г. 6:51, спустя 6 минут 52 секунды

    Экономим на спичках? Лучше буферизировать вообще весь вывод и писать в поток только один раз. Выведет данные за 0.01 секунды или за 0.0093 секунды - не все ли равно?
    Спустя 112 сек.
    а ещё можно сравнить с выводом хтмл вне php кода )))

    <?php for ($i = 0; $i < $count; $i++) : ?>
    blahblahblah
    <?php endfor; ?>
    Work, buy, consume, die
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 25 августа 2011 г. 6:52, спустя 12 секунд

    Охуенно, так что посоветуете использовать?
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 25 августа 2011 г. 6:55, спустя 3 минуты 10 секунд


    Экономим на спичках? Лучше буферизировать вообще весь вывод и писать в поток только один раз. Выведет данные за 0.01 секунды или за 0.0093 секунды - не все ли равно?


    Суть не в потраченном времени, а в том, что "echo быстрее чем print". Но я с тобой полностью согласен, особенно с тем что выводить надо лишь 1 раз.
    Спустя 80 сек.

    Охуенно, так что посоветуете использовать?


    Что душе угодно =)
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 25 августа 2011 г. 6:56, спустя 1 минуту 37 секунд

    давай MOAR запусков и на разных машинах, а этот тест не показатель
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 25 августа 2011 г. 7:06, спустя 9 минут 19 секунд

    В итоге юзаем питон.
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 25 августа 2011 г. 7:20, спустя 14 минут 48 секунд

    а не смутило что самое сложное в этой операции у обоих функций - вывод в поток?) и он какбэ как ни крути одна и таже функция. а эти фикци ив 3-7% разницы туда сюда это просто погрешности от нехуй делать которые возникают имхо
    Сапожник без сапог
  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 25 августа 2011 г. 7:53, спустя 32 минуты 47 секунд


    В итоге юзаем питон.
    )))))

    прям хабростатья какая-то, там такое частенько))
    Спустя 41 сек.
    чего-то меряют, меряют, сравнивают и ни к чему не приходят
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 25 августа 2011 г. 8:09, спустя 15 минут 42 секунды

    предлагаю сравнить print в PHP и print в Python. Может питон и не на столько крут, как его малюют?
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 25 августа 2011 г. 8:24, спустя 14 минут 57 секунд


    предлагаю сравнить print в PHP и print в Python. Может питон и не на столько крут, как его малюют?


    Отличная идея, сейчас подумаю как это можно организовать
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 25 августа 2011 г. 9:10, спустя 46 минут 27 секунд

    Для питона можно использовать http://search.cpan.org/~nine/Inline-Python-0.40/Python.pod а вот для php ничего подобного не нашел. Если вызывать таким же образом, то нужно учесть что питон подключает библиотеки/модули в скрипте (как Perl) а PHP загружает их все сразу. Можно в принципе засечь время запуска php и python и вычесть разницу из результата
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 25 августа 2011 г. 9:38, спустя 28 минут 9 секунд

    Ivan, на php.ru есть тема - называется вроде "Кружок любопытных извращенцев". Тебе туда. Там уже много чего есть.
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 25 августа 2011 г. 11:39, спустя 2 часа 18 секунд

    kostyl, кружок закрыли, Ивана уволили
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 25 августа 2011 г. 13:13, спустя 1 час 33 минуты 43 секунды

    php.ru, кстати говоря, полнейшая хуета :)
    все умрут, а я изумруд

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