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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача параметра по ссылке, в конструктор класса 
:(
    Опции темы
math_beginer
Дата 3.2.2005, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть класс - дерево. Конструктор класса, собственно, рекурсивно строит это дерево. Одним из параметров этого конструктора является двумерный массив. На больших массивах класс стал медленно работать (понятное дело, рекурсия). Решил передавать массив по ссылке. Но тогда, если передаем массив по ссылке в другие методы класса (вывод на экран, например) то работает еще медленнее, а когда передаем в конструктор, так сервак вообще вешается и пишет что-нибудь вроде: Maximum execution time of 30 seconds exceeded in C:\html\class\included_tree.php on line 26
Ведь по идее, если передаем по ссылке, то передается не копия массива, а ссылка на массив (я представляю себе это приблизительно как передачу указателя в C/C++), и следовательно, не выделяется дополнительная память под массив и должно работать быстрее. А в итоге получается, что либо работает еще медленнее, либо совсем не работает???!
--------------------
Метод "Кнута и Пряника" - алгоритм, описанный в известной монографии Кнута и позднее модифицированный русским программистом Пряником.
PM MAIL   Вверх
IZ@TOP
Дата 3.2.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Код
set_time_limit(0);

А вообще что за дерево этот класс строит? Откуда берет нфу для постройки? А то может возможно сделать все немного проще.

PS Если после set_time_limit будет выскакивать ошибка PHP Has stack overflow, ищи замену рекурсии циклом.


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

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


Шустрый
*


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

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



Теперь я вообще ничего не понимаю. Поставил set_time_limit(0). Теперь ошибок не выдается, но дерево строилось минут пять. (Если передавать массив как обычно - "по значению", то строится где-то секунды 2-3)
Массив для построения дерева берем из БД, потом передаем его в конструктор. Сейчас чуть больше 1000 элементов и 4 уровня вложенности, но в принципе число элементов и уровней вложенности может увеличиться, поэтому сомневаюсь что можно заменить циклом.
В массиве - id элемента, id родителя, имя, и еще несколько несущественных хар-тик. Вот я и надеялся: зачем так много раз копировать один и тот же массив, будем передавать его по ссылке...
--------------------
Метод "Кнута и Пряника" - алгоритм, описанный в известной монографии Кнута и позднее модифицированный русским программистом Пряником.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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