Сообщение #21 zyxer » 15.09.2020, 13:10
Еще раз попробую пояснить на пальцах как работает стек вызова, хоть это и выходит за рамки данного форума.
Вот есть код
Код: Выделить всё
func1();
function func1()
{
sleep(1);
func2();
}
function func2()
{
sleep(1);
func3();
}
function func3()
{
sleep(1);
}
В котором видно что каждая ф-ция работает ровно одну секунду и вызывает следующую. Вот так выглядит стек вызова этой ф-ции
http://prntscr.com/uhnwg7.
Видно же что время отработки func2 и func3 прибавилось к времени отработки func1 даже на абсолютных значениях
http://prntscr.com/uhnxg5. Но это вовсе не значит что func1 в данном случае является "тормозом" видно же что все три ф-ции работают ровно по одной секунде. Вот ссылка на Call Graph
https://blackfire.io/profiles/9a61c26f-2edb-4b70-92b6-b8d8e5cd884f/graph.
Далее другой пример
Код: Выделить всё
funcN1();
function funcN1()
{
sleep(1);
funcN2();
}
function funcN2()
{
sleep(1);
funcN3();
}
function funcN3()
{
sleep(2);
}
Здесь разница лишь в том, что funcN3 работает дольше чем func3 и видно что по прежнему время отработки funcN3 входит в вышестоящие методы. Вот ссылка на Call Graph funcN1
https://blackfire.io/profiles/f400494c-813f-4174-9888-d3f1f9fde184/graph (и на всякий случай скрин
http://prntscr.com/uho6np)
Еще раз попробую пояснить на пальцах как работает стек вызова, хоть это и выходит за рамки данного форума.
Вот есть код[code]
func1();
function func1()
{
sleep(1);
func2();
}
function func2()
{
sleep(1);
func3();
}
function func3()
{
sleep(1);
}
[/code]
В котором видно что каждая ф-ция работает ровно одну секунду и вызывает следующую. Вот так выглядит стек вызова этой ф-ции http://prntscr.com/uhnwg7.
Видно же что время отработки func2 и func3 прибавилось к времени отработки func1 даже на абсолютных значениях http://prntscr.com/uhnxg5. Но это вовсе не значит что func1 в данном случае является "тормозом" видно же что все три ф-ции работают ровно по одной секунде. Вот ссылка на Call Graph https://blackfire.io/profiles/9a61c26f-2edb-4b70-92b6-b8d8e5cd884f/graph.
Далее другой пример [code]funcN1();
function funcN1()
{
sleep(1);
funcN2();
}
function funcN2()
{
sleep(1);
funcN3();
}
function funcN3()
{
sleep(2);
}[/code] Здесь разница лишь в том, что funcN3 работает дольше чем func3 и видно что по прежнему время отработки funcN3 входит в вышестоящие методы. Вот ссылка на Call Graph funcN1 https://blackfire.io/profiles/f400494c-813f-4174-9888-d3f1f9fde184/graph (и на всякий случай скрин http://prntscr.com/uho6np)
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS