1
resposta

Adicionar item em array possui diferença curiosa

Olá pessoal,

Tanto no vídeo como no exercício, é citado que as duas formas de adicionar items a um array (array_push($cursos, '') e $cursos[] = '') são iguais a não ser no fato de que a função array_push permite adicionar vários items de uma só vez. Mas, há um diferença técnica que é citada de forma quase escondida na documentação e muito pouco se fala...

A diferença que se pode encontrar é que o uso do $cursos[] = '' é mais rápido que o uso da função array_push. Alguns casos já vi testes, simples claro, que mostram um ganho de 50% até 100% de velocidade.

Claro que estamos falando de coisas de milissegundos, mas é algo importante a se saber dependendo da aplicação e seus objetivo.

Inclusive, já vi exemplos de que mesmo com várias chamados ao $cursos = '' para adicionar diferentes items, pode ser mesmo assim mais rápido que uma única chamado ao array_push com vários itens como argumento.

Achei esse fato interessante para ser compartilhado.

Um código de exemplo que pode ser executado rapidamente:

<?php

$t = microtime(true);
$array = [];
for ($i = 0; $i < 10000; $i++) {
    $array[] = $i;
}

echo "Com uso de [] : \t\t" . microtime(true) - $t;
echo PHP_EOL;

$t = microtime(true);
$array = [];
for ($i = 0; $i < 10000; $i++) {
    array_push($array, $i);
}
echo "Comm uso de array_push : \t" . microtime(true) - $t;
echo PHP_EOL;

Inclusive, atualmente com o PHP 8.0.3 a diferença chega a ser cerca de 3x mais rápido com o uso de [].

1 resposta

Oi Caique, como vai?

Que legal! Realmente há uma diferença de performance.

Obrigado por compartilhar esse conhecimento aqui no fórum.

Abraços e bons estudos!