четверг, 23 ноября 2017 г.

Использование памяти в PHP

В последнее время начал задумываться об использовании памяти в тех ЯП, которыми пользуюсь.
По PHP нашел вот такую статью по использвоанию памяти. Очень понравилась эта статья.
Дальше некоторые данные по использованию памяти разными конструкциями языка PHP.
Скалярная переменная 76 байт
$a = array(); 164 байта
class A { } $a = new A(); 184 байта
$a = new stdClass(); 272 байта
цикл foreach Увеличивает потребление памяти, с каждой итерацией, видимо сохраняя значения каждой итерации в промежуточные внутренние структуры, но после завершения цикла, эта память будет освобождена.
Понравился пример, в котором значение в цикле foreach передается по ссылке и при удалении ключа и значения на каждой итерации цикла мы не теряем память.
foreach ($a as $k=>&$v) {
   $a[$k] = someBigValue();
   $v = someBigValue();unset($k, $v);
   echo 'In FOREACH cycle.'.PHP_EOL;
   memoryUsage(memory_get_usage(), $base_memory_usage);
}
И еще статья по потреблению памяти объектами.

Комментариев нет:

Отправить комментарий

Mysql настройка режима

Для настройки режима mysql не обязательно править конфиги можно выполнить команду mysql > set global sql_mode = 'STRICT_TRANS_TAB...