estoy buscando la forma más rápida de hacer una división entera en php. por ejemplo, 5/2 debería ser 2 y 6/2 debería ser 3 y así sucesivamente. si simplemente hago esto, php devolverá 2.5 en el primer caso, la única solución que pude encontrar fue usar intval($my_number/2)
, que no es tan rápido como quiero (pero da los resultados esperados).división entera en php
¿alguien puede ayudarme con esto?
EDIT:
gracias a todos ustedes por sus ideas, he utilizado la postet guión de rubber_boots para probar algunos de ellos con 10000000 iteraciones, aquí se pueden ver los resultados (MAMP en un 3 o 4 años de edad MacBook con 2 GHz Intel core 2 Duo):
start (10000000)
(int)...: 2.26 sec
floor(): 4.36 sec
int_divide(): 2.86 sec
bit-shift: 1.45 sec //note: only works for divisions through powers of 2
intval(): 4.51 sec
round() with PHP_ROUND_HALF_DOWN: 5.48 sec
hasta ahora, desplazamiento de bit es la manera más rápida, pero voy a dejar esta pregunta abierta por un día para ver si hay otras possibilitys de este ...
EDIT2:
actualizado los resultados, añade redonda() con PHP_ROUND_HALF_DOWN (gracias a Col._Shrapnel)
cuánto cálculos Simplemente curioso que participan en el código para hacer que tales una función de rendimiento significativo? –
5/2 debe ser 4? ¿Es eso una cosa php? – nvuono
tengo que hacer unos 2-3 millones de cálculos donde usar el intval() - cosa va a tomar 30-40 segundos (y creo que es posible hacer esto 2 o 3 veces más rápido) – oezi