С нами с 21.06.05
Сообщения: 1788
Рейтинг: 1579
|
Добавлено: 21/07/06 в 23:07 |
Что имеем:
$array = $class->create_array('здоровая', 'куча', 'самых', 'разных', 'параметров');
где $array становится огромный массив, который нужно перебрать
foreach ($array AS $value) {}
после перебора $array уже не нужен, но занимает много места.
получаем варианты реализации
1. Решение в лоб
Код: |
$array = $class->create_array('здоровая', 'куча', 'самых', 'разных', 'параметров');
foreach ($array AS $value) {}
unset ($array);
|
2. Некрасивое решение
Код: |
foreach ($class->create_array('здоровая', 'куча', 'самых', 'разных', 'параметров') AS $value) {}
|
3. Логичное решение, но не прокатывает
Код: |
$array =& $class->create_array('здоровая', 'куча', 'самых', 'разных', 'параметров');
foreach ($array AS $value) {}
|
Вопрос, как сделать код, после исполнения которого не будет висеть массив в памяти?
В первом варианте нравится синтаксис, во втором меньше строк, надежды на жесткую ссылку в третьем не оправдались.
Первый единственноверный вариант получается?
|
|
|
|
+ + +
С нами с 01.06.03
Сообщения: 3510
Рейтинг: 1411
|
Добавлено: 21/07/06 в 23:46 |
Оффтопик: Последние пару дней реальное засилье php-кодеров на форуме...
|
|
|
|
С нами с 21.06.05
Сообщения: 1788
Рейтинг: 1579
|
Добавлено: 22/07/06 в 00:14 |
по сабжу есть мысли у кого-нить?
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 22/07/06 в 00:18 |
а вот нихрена вам не поможет
Всего за $1 дам ответ как правильно убить массив в памяти
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
6
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 22/07/06 в 00:28 |
Stek писал: | Всего за $1 дам ответ как правильно убить массив в памяти |
ну какой вот из тебя маркетолог? ![icon_biggrin.gif](/template/images/smiles/icon_biggrin.gif) надо так: всего за $0.99 ....
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 22/07/06 в 00:36 |
webboxxx: ты смотри глубже, а думай ширше
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
6
|
|
|
С нами с 28.11.05
Сообщения: 73
Рейтинг: 11
|
Добавлено: 22/07/06 в 03:35 |
Не трогай массив в памяти!!!
а то получиться такая бяка
удаляеш элемент, НО всем остальным нуна перестроиться ;) т.е. допустим массив 1 2 3 4 5 6 удаляем 3 получается 1 2 пусто 4 5 6
и нуна массив сдвинуть ;) т.е. удалять нуна кучей иначе
бля тормоз будет, лучше найденные елементы копирить в другой массив
а вобще я бы твою проблему решил так
разделяем массив на подмассивы елементов по 1-2k
после обработки одного чистил память и работал с другим
вобще ты как эти 200к элементов получаеш ? если откудато считываеш или генериш то бес проблем сгенерил/считал 2к проверил
на их же мместо/сгенерил считал еще...
|
|
|
|
пенсионер
С нами с 07.11.02
Сообщения: 2612
Рейтинг: 1166
|
Добавлено: 22/07/06 в 11:44 |
myrmyr писал: | Не трогай массив в памяти!!!
а то получиться такая бяка
удаляеш элемент, НО всем остальным нуна перестроиться ;) т.е. допустим массив 1 2 3 4 5 6 удаляем 3 получается 1 2 пусто 4 5 6
и нуна массив сдвинуть ;) |
лол, откуда такая инфа? :-) можно ссылку на источник? ;)
|
|
|
|
С нами с 21.06.05
Сообщения: 1788
Рейтинг: 1579
|
Добавлено: 22/07/06 в 12:05 |
он вообще похоже не в тот топик(?) отпостил
|
|
|
|
С нами с 28.11.05
Сообщения: 73
Рейтинг: 11
|
Добавлено: 22/07/06 в 17:13 |
мля пацаны, действительно не сюда запостил а все же как думаеш топик стартер может тебе просто разбить архив на части ? т.е. будет такойже архив
arr[][][][]
но элементов поменьше и когда их обработаеш поиском или еще чем
грузим в этот же архив следующую партию так и избежим лишней загрузки памяти ?
|
|
|
|
С нами с 28.11.05
Сообщения: 73
Рейтинг: 11
|
Добавлено: 22/07/06 в 17:17 |
bog писал: | лол, откуда такая инфа? :-) можно ссылку на источник? ;) |
хехе ну скажи мне как массив в памяти храниться ? давай подробно
|
|
|
|
пенсионер
С нами с 07.11.02
Сообщения: 2612
Рейтинг: 1166
|
Добавлено: 22/07/06 в 21:05 |
|
|
|
|
С нами с 21.06.05
Сообщения: 1788
Рейтинг: 1579
|
Добавлено: 22/07/06 в 22:21 |
myrmyr писал: | мля пацаны, действительно не сюда запостил а все же как думаеш топик стартер может тебе просто разбить архив на части ? т.е. будет такойже архив
arr[][][][]
|
я, к счастью, уже знаю о функции array_chunk. если ты считаешь, что разбитый подобным образом массив занимает меньше памяти, ты ошибаешься.
Спасибо за ссылку. +6
|
|
|
|
С нами с 28.11.05
Сообщения: 73
Рейтинг: 11
|
Добавлено: 23/07/06 в 03:38 |
я не предлагаю разбить массив я предлагаю, генерить его кусочек каждый раз в одном и том же месте ;)
|
|
|
|