$array = range(1, 5000000);
$tempArray = [];
// Тестирование foreach + insert + unset
$startMemory = memory_get_usage();
$startTime = microtime(true);
foreach ($array as $key => $value) {
$newKey = 'key_' . $key;
$tempArray[$newKey] = $value;
}
$array = $tempArray;
$endTime = microtime(true);
$endMemory = memory_get_usage();
echo "foreach + insert + unset:<br/>";
echo "Время: " . ($endTime - $startTime) . " сек<br/>";
echo "Память: " . ($endMemory - $startMemory) / 1024 / 1024 . " Мб<br/>";
foreach + insert + unset:
Время: 0.50536894798279 сек
Память: 252.72723388672 Мб
<?php
// Исходный массив большого размера
$array = range(1, 5000000);
// Тестирование foreach + insert + unset
$startMemory = memory_get_usage();
$startTime = microtime(true);
foreach ($array as $key => $value) {
$newKey = 'key_' . $key;
$array[$newKey] = $value;
unset($array[$key]);
}
$endTime = microtime(true);
$endMemory = memory_get_usage();
echo "foreach + insert + unset:<br/>";
echo "Время: " . ($endTime - $startTime) . " сек<br/>";
echo "Память: " . ($endMemory - $startMemory) / 1024 / 1024 . " Мб<br/>";
// Сброс массива для следующего теста
$array = range(1, 5000000);
// Тестирование ArrayIterator
$startMemory = memory_get_usage();
$startTime = microtime(true);
$arrayIterator = new ArrayIterator($array);
foreach ($arrayIterator as $key => $value) {
$newKey = 'key_' . $key;
$arrayIterator->offsetUnset($key);
$arrayIterator->offsetSet($newKey, $value);
}
$endTime = microtime(true);
$endMemory = memory_get_usage();
echo "ArrayIterator:<br/>";
echo "Время: " . ($endTime - $startTime) . " сек<br/>";
echo "Память: " . ($endMemory - $startMemory) / 1024 / 1024 . " Мб<br/>";
?>
foreach + insert + unset:
Время: 0.60304093360901 сек
Память: 252.72723388672 Мб
ArrayIterator:
Время: 1.3439629077911 сек
Память: 421.78259277344 Мб
посмотреть содержимое/подправить один файл джэтбрэинс тяжеловатскорее всего соглашусь, но особых проблем не ощущаю. Особенно, когда какой-то проект уже открыт, то туда закинуть левый файл и отредактировать вообще не проблема
https://qna.habr.com