Вед-дев, Сео, Манимейкинг

Преинкремент или Постинкремент

В данной статье я расскажу вам про производительность преинкремента (++$i) и постинкремента ($i++). В циклах for() рекомендуется использовать преинкремент (++$i), т.к. он быстрее чем постинкремент ($i++). Давайте рассмотрим написанное ниже.

Основа

<?php
  for ($i=0; $i<10; ++$i) {
    print $i.'<br />';
  }
?>

Данный код выведет 0 1 2 3 4 5 6 7 8 9 (каждую цифру с новой строки), т.е. с каждой итерацией переменная $i будет увеличиваться на единицу также как и при постинкременте.

Отличия

Преинкремент сразу увеличивает число на 1, не делая при этом больше никаких действий.

Постинкремент делает следующие шаги:

Создает в памяти ячейку, в которую заносит старое значение переменной
Внутри ячейки увеличивает (или уменьшает) на единицу данное значение
Заменяет исходное значение новым

Удаляет ячейку

Как вы видите преинкремент совершает всего лишь 1 действие! Когда постинкремент совершает целых 4 шага!

Парктика

Преинкремент.

<?php
for($i=0; $i<50000; ++$i) {
  print $i.'<br />';
}
?>

Выполнился за 0.016938924789429

Постинкремент.

<?php
for($i=0; $i<50000; $i++) {
  print $i.'<br />';
}
?>

Выполнился за 0.018353939056396
Очевидно, что скрипт с постинкрементом выполнился чуть подольше чем с преинкрементом.

PS многие используют постинкремент, т.к. многие привыкли к этому уже)



Комментарии (0)

Подписаться

Подписка на RSS-лента последние записи из Блога

Комменты

  • Olzhas 11 месяцев 2 дня назад
    Спасибо. С Новым Годом! 
  • Den 11 месяцев 3 недели назад
    В первой функции, при создании переменной $li_previous нужно поменять '←' с NULL, в $li_next сделать тоже самое. 
  • Гость 11 месяцев 4 недели назад
    Если все ровно так как было описано, то нет никаких сомнений что домен увел сам регистратор. Потому что вероятность того 
  • Валерий 1 год 3 недели назад
    да можно делать импорт-экспорт только лишь в оболочке на входя на mysql сервер 
  • admin 1 год 3 недели назад
    Валерий, а зачем вам именно так делать экспорт? Если я не ошибаюсь, то там нет какой-либо команды чтобы сделать экспорт 
  • Валерий 1 год 3 недели назад
    захожу на mysql через ssh по команде  
  • admin 1 год 3 недели назад
    Добрый вечер, какой у вас клиент? 
  • Валерий 1 год 3 недели назад
    Здравстуйте, есть команда чтобы сделать экспорт базы внутри mysql клиента? 
  • Eduard 1 год 1 месяц назад
    Видать, домен хороший был. Заявление пробывали писать на мошенника? 
  • Stas 1 год 2 месяца назад
    Ошибка в ключе квантификатора - replace(/будешь|пить/ig, "хлеб"); Указать -g для прохода по всем совпадениям!