Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вложенный вызов функций, опять вопрос по производительности... 
:(
    Опции темы
PROme
Дата 31.3.2005, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: -1
Всего: 1



реализую очередную свою бредовую идею smile
возник вопрос: что будет работать эффективней, например такая конструкция с вложенным вызовом функций:

Код

$code=trim(substr($dat, strpos($dat, 'blablabla')));


или ее развернутый аналог, например:
Код

$pos=strpos($dat, 'blablabla');
$code=substr($dat, $pos);
$code=trim($code);


???

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


--------------------
SEO-мастер
PM MAIL WWW   Вверх
Mal Hack
Дата 31.3.2005, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(PROme @ 31.3.2005, 19:07)
но будет хавать больше памяти...

Как раз наоборот.

Делай как тебе больше нравится. Это не принципиально.
PM ICQ   Вверх
IZ@TOP
Дата 31.3.2005, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Мне кажется что первый вариант намного быстрее будет работать. В принципе это можно даже проверить.

PS Большой плюс за первый вариант - краткость - сестра таланта.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PROme
Дата 31.3.2005, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: -1
Всего: 1



Mal Hack, IZ@TOP просто мне приследовали следующие мысли:
если поглядеть, выгодит:

Код

trim(
 substr(
  strpos(
  )
 )
)


т.е. загружается трим, висит
затем вызывает субстр, висят уже и трим и субстр
затем субстр вызывает стрпос, висят все трое в памяти
затем это все по очереди закрывается

а во втором же случае - запустился-закончился, запустился-закончился...
в принципе, 3-4 уровня вложенности еще не страшно... а если более?

хотя кто его знает... по крайней мере мне так кажется...


--------------------
SEO-мастер
PM MAIL WWW   Вверх
ST_Falcon
Дата 4.4.2005, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 14.11.2003
Где: Львов

Репутация: нет
Всего: 1



мне тоже второй вариант больше нравится.
не люблю я длинные строки с кучей вложений... во первых запутаться просто, во вторых действительно памяти должно больше хавать.
PM MAIL ICQ   Вверх
Mal Hack
Дата 4.4.2005, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Во второйм варианте используется лишняя переменная, лишний раз присваивается значение переменной $code, и лишний раз $code передается в качестве параметра по сравнению с первым вариантом.
Поэтому, имхо, первый вариант уж точно памяти меньше кушает.
Могу, конечно и ошибаться, но по логике так...

Это сообщение отредактировал(а) Mal Hack - 4.4.2005, 11:32
PM ICQ   Вверх
PROme
Дата 4.4.2005, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: -1
Всего: 1



Mal Hack ну, значение этой переменной можно и не присваивать, двууровневое вложение функций по-моему в любом случае не страшно
а по поводу лишней переменной, так, а как насчет того, что в первом варианте, в середине будут висеть в памяти все предшествующие функции - неизвестно еще сколько они хавают, явно больше одной переменной... мне так кажется


--------------------
SEO-мастер
PM MAIL WWW   Вверх
Ignat
Дата 4.4.2005, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Цитата(PROme @ 31.3.2005, 20:16)

т.е. загружается трим, висит
затем вызывает субстр, висят уже и трим и субстр
затем субстр вызывает стрпос, висят все трое в памяти
затем это все по очереди закрывается

Не, не так это работает:
трим не запустится пока не будет рассчитан аргумент, substr тоже, т.о. вложенная запись аналогична последовательной, за исключением лишнего присваивания во втором случае.
Про винду могу сказать, что в памяти висеть ничего не будет (точнее уже висят), ибо все эти функции уже находятся в памяти с импортом функций из php4apache.dll с момента старта апача.


--------------------
Теперь при чем :P
PM   Вверх
PROme
Дата 4.4.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 23.7.2003
Где: Kiev

Репутация: -1
Всего: 1



Цитата
трим не запустится пока не будет рассчитан аргумент, substr тоже

да? тогда уже интересней smile
ну, а с другой стороны - ведь в php, если не указано явных переходов, выполняется строчка за строчкой, а тут же интерпритатор должен же как-то помнить, что нужно вернуться впоследствии к вызвавшей функци - тоже какие-то доп ресурсы smile

Цитата
все эти функции уже находятся в памяти

угу, но одно дело находятся, а другое - выполняются де-то... они ведь начинают для себя ресурсы жрать... так ведь?

ну ладно, всем спасибо за ответы smile


--------------------
SEO-мастер
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.