| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Вложенный вызов функций |
| Автор: PROme 31.3.2005, 18:07 | ||||
| реализую очередную свою бредовую идею возник вопрос: что будет работать эффективней, например такая конструкция с вложенным вызовом функций:
или ее развернутый аналог, например:
??? мне кажется что первый вариант должен выполняться быстрее, но будет хавать больше памяти... в общем, как лучше поступить, не подскажите? |
| Автор: Mal Hack 31.3.2005, 18:18 | ||
Как раз наоборот. Делай как тебе больше нравится. Это не принципиально. |
| Автор: IZ@TOP 31.3.2005, 18:36 |
| Мне кажется что первый вариант намного быстрее будет работать. В принципе это можно даже проверить. PS Большой плюс за первый вариант - краткость - сестра таланта. |
| Автор: PROme 31.3.2005, 20:16 | ||
| Mal Hack, IZ@TOP просто мне приследовали следующие мысли: если поглядеть, выгодит:
т.е. загружается трим, висит затем вызывает субстр, висят уже и трим и субстр затем субстр вызывает стрпос, висят все трое в памяти затем это все по очереди закрывается а во втором же случае - запустился-закончился, запустился-закончился... в принципе, 3-4 уровня вложенности еще не страшно... а если более? хотя кто его знает... по крайней мере мне так кажется... |
| Автор: ST_Falcon 4.4.2005, 11:22 |
| мне тоже второй вариант больше нравится. не люблю я длинные строки с кучей вложений... во первых запутаться просто, во вторых действительно памяти должно больше хавать. |
| Автор: Mal Hack 4.4.2005, 11:31 |
| Во второйм варианте используется лишняя переменная, лишний раз присваивается значение переменной $code, и лишний раз $code передается в качестве параметра по сравнению с первым вариантом. Поэтому, имхо, первый вариант уж точно памяти меньше кушает. Могу, конечно и ошибаться, но по логике так... |
| Автор: PROme 4.4.2005, 14:09 |
| Mal Hack ну, значение этой переменной можно и не присваивать, двууровневое вложение функций по-моему в любом случае не страшно а по поводу лишней переменной, так, а как насчет того, что в первом варианте, в середине будут висеть в памяти все предшествующие функции - неизвестно еще сколько они хавают, явно больше одной переменной... мне так кажется |
| Автор: Ignat 4.4.2005, 14:21 | ||
Не, не так это работает: трим не запустится пока не будет рассчитан аргумент, substr тоже, т.о. вложенная запись аналогична последовательной, за исключением лишнего присваивания во втором случае. Про винду могу сказать, что в памяти висеть ничего не будет (точнее уже висят), ибо все эти функции уже находятся в памяти с импортом функций из php4apache.dll с момента старта апача. |
| Автор: PROme 4.4.2005, 15:22 | ||||
да? тогда уже интересней ну, а с другой стороны - ведь в php, если не указано явных переходов, выполняется строчка за строчкой, а тут же интерпритатор должен же как-то помнить, что нужно вернуться впоследствии к вызвавшей функци - тоже какие-то доп ресурсы
угу, но одно дело находятся, а другое - выполняются де-то... они ведь начинают для себя ресурсы жрать... так ведь? ну ладно, всем спасибо за ответы |