Тест стоимости вызовов в php7.3-fpm

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

Провел тестирование стоимости вызовов функций на PHP7.3-fpm, итого результаты теста:

avg time: clear=26,16 ns, func=69,83 ns, stat=83,53 ns, method=90,29 ns.
static/func=31,4%
method/func=46,9%


Железо: Pentium Core2duo E2200, выключено все по максимуму, кроме браузера с 1 вкладкой :)

Тест - простая функция ( return $i+10; ) возвращающая параметр + константа, результат которой присваивается в переменную в цикле из 100_000 повторов. Функция реализована трижды: как глобал, как статическая функция класса и как метод объекта.
4 цикла (один "пустой", без вызова но с вычислением) завернуты в 100 повторов для вычисления средних значений.

Сам тест:

Код: Выделить всё

<?php
// Проверка скорости исполнения вызовов статических, методов и простых функций для php7.3-fpm:

/** simple function */
function someTest(int $i): int
{
    return $i+10;
}

class Some {
    public static function statTest(int $i): int
    {
        return $i+10;
    }

    public function dynTest(int $i): int
    {
        return $i+10;
    }
}

$objSome = new Some();
$i = 0;
$res = 0;
$num = 100;
$repeat = 1000*1000;
$sum = [];

ob_start();
do {
    $start = microtime(true);
    for ($i = 0; $i < $repeat; $i++) {
        $res = $i+10;
    }
    $start = round((microtime(true) - $start)*1000, 3);
    echo $res;
    $sum['clear'][] = $start;

    $start = microtime(true);
    for ($i = 0; $i < $repeat; $i++) {
        $res = someTest($i);
    }
    $start = round((microtime(true) - $start)*1000, 3);
    echo $res;
    $sum['function'][] = $start;

    $start = microtime(true);
    for ($i = 0; $i < $repeat; $i++) {
        $res = Some::statTest($i);
    }
    $start = round((microtime(true) - $start)*1000, 3);
    echo $res;
    $sum['static'][] = $start;

    $start = microtime(true);
    for ($i = 0; $i < $repeat; $i++) {
        $res = $objSome->dynTest($i);
    }
    $start = round((microtime(true) - $start)*1000, 3);
    echo $res;
    $sum['method'][] = $start;
} while( --$num > 0 );
ob_clean();

$num = 100;
$clear = $func = $stat = $dyn = 0.0;
for($i=0; $i<$num; $i++){
    $clear += $sum['clear'][$i];
    $func  += $sum['function'][$i];
    $stat  += $sum['static'][$i];
    $dyn   += $sum['method'][$i];
}
// calc average time for 1 in nano seconds:
$multiplier = 1000*1000/$num/$repeat;
$clear = round($clear*$multiplier, 2);
$func  = round($func*$multiplier, 2);
$stat  = round($stat*$multiplier, 2);
$dyn   = round($dyn*$multiplier, 2);

echo "\n<br><br>avg time: clear={$clear} ns, func={$func} ns, stat={$stat} ns, method={$dyn} ns."
  , "\n<br>static/func=", round(($stat-$clear)/($func-$clear)*100 - 100, 1), '%'
  , "\n<br>method/func=", round(($dyn-$clear)/($func-$clear)*100 - 100, 1), '%'
;
.. к вопросу множественных вложенных вызовов, глубина которых часто достигает 60-90+ .. :)
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

Удалил все описания параметров и возвращаемых значений .. расход на проверку в рантайм оказался "велик" однако.

avg time: clear=26,25 ns, func=54,34 ns, stat=67,98 ns, method=75,69 ns.
static/func=48,6%
method/func=76%

Примерно 18% и слабо зависит от типа вызова, что понятно. :(
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение ElisDN »

И какую пользу это несёт?
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

Полезность/вредность применения того или иного варианта. Только и всего. :)
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение ElisDN »

Полезность/вредность в чём выражается?
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

А самим? :)

Тест выложен. Кстати он показывает у меня с очень большим разбросом, но соотношения - подобны.

1. для Hiload построюшка на обычных функциях будет быстрее чем на ООП. В целом оно и ожидалось, не удивительно. Удивительно что разброс меньше 2-х раз.
2. Чем больше "классов" и мелких функций в 1-2 действия (геттеры, особо!) - тем медленней "фреймворк". Характерно для развестистых построюшек а-ля Zend, Yii, Laravel, Symphony .. по сути тут прямое обоснование принципов KISS, DRY, YAGNI "в чиселках". :)
3. Чем больше "брокеров", "хелперов сервиса", "сервисов", .. тем хуже соответственно. Стоит выбрасывать "все лишнее" (YAGNI) .. т.к. все это растит стек вложенных вызовов (у Zend часто 50+, особенно в верхних классах Zend_Db .. опыт работы с ним с 2011г примерно). Стек 10-12 вложений - типовая ситуевина.
4. Пустой цикл занимает примерно половину(!) от вызова функции с одним действием и под четверть для метода, то есть там где есть "одно действие" (подобная функция) имеем от 50/50 до 75/25 затрат на вызов, к полезной деятельности (практически цена геттера).

Отсюда: для достижения 10/90 потребуется не менее 10 "действий" внутри обычной функции и >30 для метода объекта, в противном случае, условное "КПД" падает и существенно. Что требует обоснований, для применения "мелких" функций в проектах.

.. может поможет при разработках новых версий "фреймворков для начинающих". ;)

P.S. Простой HMVC-фреймворк, типа Kohana вполне можно запустить на всего .. 5-10 классах, с небольшим количеством функций и методов с полноценной СУБД (в т.ч. и множественной записью), ЧПУ, контроллерами, видами и т.д. В итого, можно вести речь за 1-5 килореквестов в секунду без применения "супер железа". Это, конечноже не чистый nginx для статики, но все же уже ближе к Hiload.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение chungachguk »

Запустил скрипт на 7.4-cli, теперь даже не знаю, это плохие или хорошие результаты?

Код: Выделить всё

avg time: clear=111.32 ns, func=410.58 ns, stat=451.47 ns, method=469.87 ns.

static/func=13.7%

method/func=19.8%   
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

cli - все-таки не "сайтовый PHP", ну и 7.4 лучше 7.3, как и ожидалось. В целом спасибо. Тест прост "до безобразия" и чем больше будет тут результатов, тем полнее можно собрать статистику. Только, надо бы ещё указывать железо на котором запущено.

А если убрать типизацию параметров и результатов, что выдаст?
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

Запустил в PHP7.3-CLI, условия запуска: железо Intel Core2due E2200, RAM 6Gb, Debian 10.3
Выгружены ВСЕ клиентские процессы вплоть до почтовой службы, аськи, скайпа, Шторма и браузера. Кроме самого Debian Mate, демонов nginx, MariaDb, Postgre, MongoDb, php7.3-fpm в системе нет ничего "лишнего" :) Загрузка проца - очень ровная линия во время исполнения теста.
Результат:
avg time: clear=31.02 ns, func=60.04 ns, stat=72.58 ns, method=77.95 ns.
static/func=43.2%
method/func=61.7%

Это с убранными типами в описаниях параметров и возвращаемых результатов.
FPM у меня получился даже шустрей. Но, соотношения - практически те же.

Поставил PHP7.4, результат выполнения теста в CLI:

avg time: clear=26.38 ns, func=74.6 ns, stat=84.32 ns, method=88.43 ns, closure=104.79 ns.
static/func=20.2%
method/func=28.7%
clos/func=62.6%

Добавлена вот такая "кложура" и соответственно скопипащен блок теста и вычислений :)

Код: Выделить всё

$closure = function(int $i): int
{
    return $i+10;
};
P.P.S. Прикольно, но .. не лучше. Вызовы стали медленней, что сказалось на общих соотношениях. :(
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение skynin »

Arhat109 писал(а): 2020.10.13, 14:24 1. для Hiload построюшка на обычных функциях будет быстрее чем на ООП. В целом оно и ожидалось, не удивительно. Удивительно что разброс меньше 2-х раз.
Встречал аналогичные цифры для виртуальных методов в С++ и близкие к перегруженным в Java.
И?

Проблемы Hiload решаются не ухудшением качества кода
Arhat109 писал(а): 2020.10.13, 14:24 2. Чем больше "классов" и мелких функций в 1-2 действия (геттеры, особо!) - тем медленней "фреймворк". Характерно для развестистых построюшек а-ля Zend, Yii, Laravel, Symphony .. по сути тут прямое обоснование принципов KISS, DRY, YAGNI "в чиселках". :)
KISS, DRY, YAGNI не имеет отношения "к чиселкам" синтетических тестов.
Arhat109 писал(а): 2020.10.13, 14:24 3. Чем больше "брокеров", "хелперов сервиса", "сервисов", .. тем хуже соответственно. Стоит выбрасывать "все лишнее" (YAGNI) .. т.к. все это растит стек вложенных вызовов (у Zend часто 50+, особенно в верхних классах Zend_Db .. опыт работы с ним с 2011г примерно). Стек 10-12 вложений - типовая ситуевина.
Естественно. Чем больше машинных инструкций выполняется, тем... их больше выполняется!
Arhat109 писал(а): 2020.10.13, 14:24 Отсюда: для достижения 10/90 потребуется не менее 10 "действий" внутри обычной функции и >30 для метода объекта, в противном случае, условное "КПД" падает и существенно. Что требует обоснований, для применения "мелких" функций в проектах.
Один лишний запрос к БД, к стороннему сервису (даже в пределах одного дата центра) - на сотни порядков просадит перфоманс, если вас озаботатила работа интерпретатора PHP и Hiload.
Вы не с того боку решили зайти на Hiload :)

Хотя конечно, бывают истории как недавно у Дискорда, и они вынуждены были переписать один из своих сервисов с Go на Rust.
Arhat109 писал(а): 2020.10.13, 14:24 .. может поможет при разработках новых версий "фреймворков для начинающих". ;)
Начинающим надо изучать программирование, а не фреймворки.
Arhat109 писал(а): 2020.10.13, 14:24 P.S. Простой HMVC-фреймворк, типа Kohana вполне можно запустить на всего .. 5-10 классах, с небольшим количеством функций и методов с полноценной СУБД (в т.ч. и множественной записью), ЧПУ, контроллерами, видами и т.д. В итого, можно вести речь за 1-5 килореквестов в секунду без применения "супер железа". Это, конечноже не чистый nginx для статики, но все же уже ближе к Hiload.
Ценность решений в конечном счете определяется бизнес ценностью и удовлетворенностью пользователя, а не результатами синтетических тестов по вызову методов.

И, обычно, если у бизнеса нет денег сменить "шаред хост" на "VPS" - то у него нет денег и оплатить работу программиста по оптимизации.

Не, конечно, микробенчмарки все пробовали писать, и делать великие открытия. Любознательность - это хорошо и правильно!
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

:) Не, спорить ни с чем не буду, т.к. уже вырос из этого возраста. :)

Кмк, стремиться надо к чем-уто такому (перерисовал, т.к. не смог сюда воткнуть картинкой):

Это главная страница сайта.
Тут ещё ничего нет, наберите правильный урл, например:

arhat.su/market -- "Барахолка"

global:: time=0,51msec., memory add=47896 bytes. (399200)
layout:: time=0,083msec., memory add=17136 bytes. (429960)

.. простой, живой рабочий фреймворк, все на том же самом старом Core2duo .. 1000/0,51 = 1960 рекветов в сек. при собственном потреблении в менее 48 килобайт и тех самых "своих" 10-и классах. Мне такой результат нравится как-то слегка лучше чем у "знаменитостей". :roll:
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение samdark »

Микро-оптимизации — это интересно, но на них сильно много не выиграть. Для фреймворка в целом заниматься ими иногда стоит, но после профайлинга. То есть доказав что да, вот этот метод в цикле вызывается 100 тысяч раз, его лучше заинлайнить и получить 5% прироста. Просто так же превращать код в лапшу смысла нет.
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

Предлагаю сделать профайлинг простой страницы на Yii2, аналогично тесту Laravel: 1 контроллер, с одним действием, которое выводит простой вид с текстом "Привет, Мир!" и посчитать количество вызванных методов суммарно. Начиная от index.php .. далее посчитать "КПД" вызовов как средний размер метода к стоимости вызова, примерно как выше ..

Отсюда уже можно будет с чиселками смотреть "стоит ли заниматься микрооптимизацией" и действительно насколько она "микро".
Сильно опасаюсь, что получится как и у Laravel .. РАЗЫ.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

Сам же поставил задачу, сам же и отвечу.

Переработка примера простого фреймворка к статическим классам (это не трудно), привела к росту среднего времени отклика на том же железе до 0.61мсек и росту потребляемой памяти до 49 килобайт. (Выше пиковый отклик 0.457мсек, в сообщении указан средний).

Всего-то добавлено 5(пять!) статических вызовов функций с "условным КПД" в 50% .. сравнительная потеря скорости отклика около 30%

P.S. Собственно тут и есть ответ на вопросы о "красоте кода фреймворка" и плате за "удобство" (легкость вхождения для начинающих): хорошо, если условное КПД останется на уровне 0.01%, то есть "красота кода ради самой красоты", а то, что приложение работает 99% времени "на себя" .. это "мелочи" :)
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение skynin »

samdark писал(а): 2020.10.14, 16:36 Микро-оптимизации — это интересно, но на них сильно много не выиграть.
тем более что в реальных проектах плюс.минус 200мс обычно роли не играют

а как в одном подкасте о хайлоад рассказали

на собеседовании, опытному специалисту вопрос
- Имели ли вы дело с хайлоад проектами?
- Не знаю, но я вам могу устроить хайлоад и на 2ух активных подключениях
Собеседующие оценили, и дальше собеседование пошло более предметное.

А такие микротесты пишут постоянно. Упоминал одногруппники показывали результаты, как тормозят виртуальные методы в С++, с выводом конечно - долой С++, даешь plain C!
потом уже и долой Джаву, как медленную и съедающую память, и т.д.
причем потом появились доклады от ребят с московского отделения Oracle
народ, если уж взялись писать микротесты - то пишите их правильно, изучите немножко работу JVM, а не переносите наивный код на Java,

Да и сам PHP со своего рождения - постоянно под градом критики "тру программистов" :)

Но кого это волнует, в действительности, если важнее - скорость разработки
Вся история развития ЯП, инструментов и самих методов ведения разработки об этом - увеличении количества выдаваемых фичей за единицу времени работы программиста или команды

Python по синтетике во сколько там раз медленнее PHP 7, в 3 раза в среднем кажется?
И ничего, применяется в проектах с высокой нагрузкой, и в TIOBE все ползет вверх

Да, и мне доводилось оптимизировать ассемблер после С компилятора, в эпоху досуперскалярных процессоров, например заменять call на jump с реорганизацией передачи параметров через регистры а не стек, высчитывая такты. Потому что - надо было, по требованиям. А когда не надо - то никто таким и не занимался, и сказали бы - тебе делать что-ли нечего?
Я к тому что открытие что вызов процедуры, а тем более виртуального метода "дорогой" можно было сделать и без микротеста.
Это просто так устроен процессор, и такой что нативный, что опкод транслятора получится с языка высокого уровня - более дорогой.
(Хотя сейчас компиляторы такие оптимизации делают, что не всегда. JIT компилятор в JVM точно умеет перегруженные(=виртуальные) методы инлайтить сам, после сбора статистики вызовов, даже если в коде был вызов метода по интерфейсу)

Так что о
Не, спорить ни с чем не буду, т.к. уже вырос из этого возраста.
сомневаюсь что выросли. ничего личного. мне 50, лет уже 25 или 27 в программировании :)

у меня даже критерий такой - а, ни о чем кроме быстродействии думать не можешь - значит молодой еще, неопытный :)
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

у меня даже критерий такой - а, ни о чем кроме быстродействии думать не можешь - значит молодой еще, неопытный
Тогда тоже поделюсь своим критерием, ибо "без копейки не бывает рубля. Копейка туда, копейка сюда вот уже и тормозит все нещадно":

Если программист не заботится о размере и времени исполнения своего говна, то это "сборщик", а не програмист, независимо от возраста. :)

И таки да, мне 58, в ИТ с 1979-го.. остальное - без комментариев, т.к. каждый инструмент полезен для своего круга задач.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение skynin »

Arhat109 писал(а): 2020.10.21, 14:02 Тогда тоже поделюсь своим критерием, ибо "без копейки не бывает рубля. Копейка туда, копейка сюда вот уже и тормозит все нещадно":

Если программист не заботится о размере и времени исполнения своего говна, то это "сборщик", а не програмист, независимо от возраста. :)

И таки да, мне 58, в ИТ с 1979-го.. остальное - без комментариев, т.к. каждый инструмент полезен для своего круга задач.
Ваш критерий понятен: такой программист тратит время а в итоге деньги - на то что не нужно, если его никто об этом не просил, потому что у него это абсолютный критерий качества.
А должен быть - относительный.
ему в науку нужно - там пусть казенные деньги или гранты и тратит на свои развлечения :)

А когда тормозит нещадно - то надо было проектировать правильно изначально.
Либо - раз бизнесу было достаточно, а стало недостаточно: бизнесу оплачивает новое функциональное требование - скорось обработки не должна превышать Х времени.
Arhat109 писал(а): 2020.10.21, 14:02 т.к. каждый инструмент полезен для своего круга задач.
Да, каждый навык надо применять когда нужно.
И помнить про микрооптимизации, и о чем это:
Преждевременная оптимизация — корень всех зол
(с) Дональдь Кнут.

Программист который соответствует критерию:
заботится о размере и времени исполнения своего кода

не знает или не понял о чем это Кнут :)
Arhat109 писал(а): 2020.10.21, 14:02 И таки да, мне 58, в ИТ с 1979-го.
Design and programming are human activities; forget that and all is lost.
Bjarne Stroustrup
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

Довел свои исследования до разумного состояния.

Итого, на моем core2duo загрузка файла занимает примерно 0.04сек для "среднего" файла в около 113 строк.
После перевода на "полноценный ООП", всего грузится 15 файлов, что дает затраты = 0,04*15 = 0,6мс на запрос. Время исполнения кода добавляет ещё столько же 0.6мс. Т.е. имеем пиковую отдачу около 833 запроса в секунду. Это для страниц "учебника", который сейчас сделал. нашлось "узкое место" и скорость отдачи учебника (простых страниц) можно поднять ещё примерно в 2 раза.
По сути, если не считать объема страницы это 1 роутер + 1 контроллер и его вид.

Есть в Сети аналогичный тест для Laravel, в котором для 1 роутера и контроллера (вывод "Привет мир!") приведена статистика в 250+ загружаемых классов. С учетом 1 класс = 1 файл, предположив похожесть размеров и времени загрузки на этом же core2duo имеем 0,04*250 = 10мсек и плюсом столько же на их исполнение.
Итого около 50 запросов в секунду.
*added3* Всеже поднял образец Laravel сайта как проект, хоть и не нужен .. в реальности отдача главной страницы составила 15мсек (67 запросов в секунду)

*added2* Добавил подобный тест для Yii2 шаблон advanced, показ штатной странички "Yii2 congratilations!" без логина (нет обращения к БД) .. на моем core2duo кешированное исполнение (5-й запрос по F5 и лучшее время в отладчике Yii2) составило 7мсек. Предположив те же условия (0.04 мсек на класс) можно предположить кол-во загружаемых классов около 90. Как догадываюсь, каждый прочитавший тему, это уже проделал не единожды. Пусть будет как сравнение одной задачи на одном железе.

Цена вопроса "на пальцах". Каждый пусть сделает выводы сам. Сколько в Yii3 загружается классов? :)

P.S. И никакое "кеширование", для простой отдачи страниц, кроме файлового в ОС и опкода в PHP эту ситуацию практически улучшить не в состоянии, ибо "данные одноразовы". Больше того, на приличных объемах одноразовых данных кеширование может сьедать до 5-10% производительности сайта.

P.P.S. Моему последнему оппоненту: когда АРГУМЕНТОВ НЕТ, всегда переходят на личности, пусть даже "опосредовано и вежливо". У Вас их НЕТ. Что понятно.

В целом, поднял топик не чтобы спорить, а чтобы показать цену "красивого кода ООП ради ООП". Тема исчерпана, каждый делает выводы сам. За все придется платить. Кстати, время разработки учебника на готовом фреймворке = времени писания текста самого учебника, что не удивительно.
Последний раз редактировалось Arhat109 2020.10.25, 12:35, всего редактировалось 3 раза.
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Arhat109
Сообщения: 61
Зарегистрирован: 2016.11.23, 09:06
Откуда: из СССР

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение Arhat109 »

Кстати, тут есть большой простор для дальнейшей оптимизации движка PHP..
Все чаще Историки находят следы древней и очень высокоразвитой Цивилизации, со странными буквами .. СССР
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Тест стоимости вызовов в php7.3-fpm

Сообщение samdark »

Сколько будет в Yii3 загружаться классов?
Проверьте сами. Так он быстрее Yii 2. По крайней мере пока.
Ответить