Tenemos el siguiente array

$r = array(
	0 => 'verde',
	1 => 'azul',
	2 => 'verde',
	3 => 'verde',
	4 => 'amarillo',
);

Y queremos eliminar los elementos duplicados, para lo cual tenemos dos opciones

1. array_values + array_unique

$r = array_values(array_unique($r));

2. array_keys + array_flip

$r = array_keys(array_flip($r));

¿Cuál es mejor?

Desde el punto de vista de legibilidad del código ambas opciones son válidas, ya que el comportamiento de cada una de las funciones utilizadas es bastante simple de comprender y se pueden consultar en el manual de PHP. Por lo tanto, lo único que puede determinar la conveniencia de una opción por sobre la otra es el tiempo de ejecución de cada una.

Para determinarlo, hemos realizado un benchmark. Estos son los resultados:

Opción 1 (array_values + array_unique)

-> Testing http://localhost/experimental/array_unique/1.php

Total Requests made: <strong>1000</strong>
Total Time elapsed: <strong>14.009807348251</strong> (seconds)

Requests/Second: <strong>71.379 req/sec</strong>
Average request time: <strong>0.014 seconds</strong>
Standard deviation of average request time: <strong>0.002</strong>
Longest/shortest request: <strong>0.017 sec/0.004 sec</strong>

Opción 2 (array_keys + array_flip )

-> Testing http://localhost/experimental/array_unique/2.php

Total Requests made: <strong>1000</strong>
Total Time elapsed: <strong>13.918713331223</strong> (seconds)

Requests/Second: <strong>71.846 req/sec</strong>
Average request time: <strong>0.014 seconds</strong>
Standard deviation of average request time: <strong>0.003</strong>
Longest/shortest request: <strong>0.017 sec/0.004 sec</strong>

Conclusión

La diferencia entre una opción y otra es prácticamente despreciable, así que la conclusión es que da lo mismo usar cualquiera.

Otra idea que podemos rescatar de esto es que realizar comparaciones entre funciones nativas de PHP realmente es un desperdicio de tiempo porque casi nunca se lograrán resultados significativos. Las verdaderas mejoras en la performance de una aplicación o website se consiguen atacando aquellas partes del código que mayores recursos consumen, como por ejemplo: consultas a base de datos, llamados excesivos a funciones recursivas, consumo de webservices, mala gestión de caché, etc.