Foros del Web » Programando para Internet » PHP »

Uso de variables en Keys de matrices

Estas en el tema de Uso de variables en Keys de matrices en el foro de PHP en Foros del Web. Cual es la diferencia en rendimiento de usar variables en los keys de las matrices a usar constantes. Ejemplo: Cual sería la diferencia de usar ...
  #1 (permalink)  
Antiguo 15/02/2011, 14:02
 
Fecha de Ingreso: septiembre-2007
Mensajes: 76
Antigüedad: 16 años, 7 meses
Puntos: 2
Pregunta Uso de variables en Keys de matrices

Cual es la diferencia en rendimiento de usar variables en los keys de las matrices a usar constantes. Ejemplo:

Cual sería la diferencia de usar

$matriz[$var1][$var2]=$var3

a usar

$matriz[0][const1] = $var1
$matriz[0][const2] = $var2
$matriz[0][const3] = $var3

Por el momento tengo el codigo como el primer ejemplo $matriz[$var1][$var2]=$var3 con una BD de prueba con 30 registros y funciona bien sin problemas. Lo que no quiero es que cuando llegue a mas de 1000 registros se tarde horas en ejecutar la funcion.

Espero haberme explicado bien, si tiene alguna duda haganmelo saber para explicarlo de otra manera. De antemano les agradezco por cualquier comentario al respecto

Saludos.
  #2 (permalink)  
Antiguo 15/02/2011, 14:05
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Uso de variables en Keys de matrices

No creo que haya una diferencia, no obstante manejar constantes como índices puede hacer que tu código resulte algo inflexible, si la matriz requiriera aumentar dimensiones.
  #3 (permalink)  
Antiguo 15/02/2011, 14:24
 
Fecha de Ingreso: septiembre-2007
Mensajes: 76
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Uso de variables en Keys de matrices

Muchas gracias por el comentario.

La diferencia de usar variables en la matriz es que quedan espacios o celdas vacias y con las constantes no.
No estoy seguro si esto afecta en el rendimiento ocupando mas memoria, ya que si crece el número de registros por lógica crece el número de variables por lo que crece el número de columnas haciendo que existan más espacios sin utilizar. Por otro lado al usar constantes lo único que crece es el número de filas y todos los espacios se utilizarían.

Otro punto a considerar es que al usar variables el código para leer dicha matriz son 4 renglones en cambio al usar constantes el código es más extenso.

Debido a esto no se que opción sea mejor. Que afecte más al rendimiento del sitio web.
  #4 (permalink)  
Antiguo 15/02/2011, 16:22
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: Uso de variables en Keys de matrices

No se en que tipo de caso utilizarías constantes como keys de una matriz... pero creo que la mejor solución seria que ejecutaras algunos benchmark para comparar el rendimiento.

Lo que si queda claro, es que simpre las variables van a ser mas rapido.

1. Variables
2. Arrays
3. Constantes
  #5 (permalink)  
Antiguo 15/02/2011, 16:42
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Uso de variables en Keys de matrices

Cita:
Iniciado por israbart Ver Mensaje
Cual es la diferencia en rendimiento de usar variables en los keys de las matrices a usar constantes. Ejemplo:

Cual sería la diferencia de usar

$matriz[$var1][$var2]=$var3

a usar

$matriz[0][const1] = $var1
$matriz[0][const2] = $var2
$matriz[0][const3] = $var3

Por el momento tengo el codigo como el primer ejemplo $matriz[$var1][$var2]=$var3 con una BD de prueba con 30 registros y funciona bien sin problemas. Lo que no quiero es que cuando llegue a mas de 1000 registros se tarde horas en ejecutar la funcion.

Espero haberme explicado bien, si tiene alguna duda haganmelo saber para explicarlo de otra manera. De antemano les agradezco por cualquier comentario al respecto

Saludos.
No hay diferencia perceptible es del orden de los mili-segundos. yo no me preocuparía por eso.
__________________
Saludos.
  #6 (permalink)  
Antiguo 15/02/2011, 16:47
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: Uso de variables en Keys de matrices

Preocuparse por estos detalles, hacen buenas aplicaciones.
  #7 (permalink)  
Antiguo 15/02/2011, 16:59
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Uso de variables en Keys de matrices

Cita:
Iniciado por jonasanx Ver Mensaje
Preocuparse por estos detalles, hacen buenas aplicaciones.
Preocuparse por buenos diseños es lo que hace buenas aplicaciones, un factor de mili-segundos no es representativo como para preocuparse. Y menos en el uso de indices en un arreglo de todas formas no vas a hacer diferencia por una fracción de ese tiempo en eso. mejor piensa en el diseño de tu aplicación y en lo escalable que vaya ser de acuerdo a las necesidades futuras.
__________________
Saludos.
  #8 (permalink)  
Antiguo 15/02/2011, 17:12
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: Uso de variables en Keys de matrices

Cita:
Iniciado por JaimeSavines Ver Mensaje
Preocuparse por buenos diseños es lo que hace buenas aplicaciones, un factor de mili-segundos no es representativo como para preocuparse. Y menos en el uso de indices en un arreglo de todas formas no vas a hacer diferencia por una fracción de ese tiempo en eso. mejor piensa en el diseño de tu aplicación y en lo escalable que vaya ser de acuerdo a las necesidades futuras.
Bueno, pues ya es gusto de cada quien, por mi parte al crear aplicaciones suelo optimizarlas lo mejor posible, si se que algo es mas rapido que otro algo, pues lo implemento, así de fácil. Y es cierto, una infraestructura flexible es la base de cualquier aplicación que pretende escalarse.

Última edición por jonasanx; 15/02/2011 a las 17:19
  #9 (permalink)  
Antiguo 15/02/2011, 17:28
 
Fecha de Ingreso: septiembre-2007
Mensajes: 76
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Uso de variables en Keys de matrices

Muchas gracias jonasanx por tu comentarios

En la mayoria de las guias sobre matrices que he buscado la usan de esta manera:

$matriz[0]['Nombre'] = "Israbart";
$matriz[0]['Direccion'] = "calle foros N° 123";
$matriz[0]['telefono'] = 999 999 999;
$matriz[1]['Nombre'] = "Bartisra";
$matriz[1]['Direccion'] = "calle delweb N° 456";
$matriz[1]['telefono'] = 000 000 000;
.
.
. etc

El primer key lo obtiene del contador de algun bucle, y el segundo puede ser un campo como Nombre, Edad, Direccion, etc. u otro contador dentro de un bucle anidado. De acuerdo a la matriz del ejemplo anterior se obtiene una tabla asi:

Nombre Direccion Telefono
0 Israbart calle foros N°123 999 999 999
1 Bartisra calle delweb N° 456 000 000 000

De esta forma se ocupan todos los espacios de la matriz, sin embargo para visualizar esto en pantalla como lo necesito se ocupa varias líneas de código. (Bueno digo varias pero son como 30 líneas)

Ahora bien lo que yo tengo es algo como esto, tomando los datos del ejemplo anterior:

$matriz['Israbart']['calle foros N° 123'] = 999 999 999
$matriz['BartIsra']['calle delweb N° 456'] = 000 000 000
.
.
.

Los keys obtienen su valor de los registro de la base de datos. De esta manera si la BD tiene 20 valores diferentes en el campo Dirección de un total de 30 registros tendría 20 columnas diferentes en lugar de solo 3 como en el ejemplo anterior. De acuerdo a la matriz anterior se tiene una tabla asi:

calle foros N° 123 calle delweb N° 456 . . . valor N
Israbart 999 999 999
BartIsra 000 000 000
.
.
.
valorN

Lo bueno de esta forma es que para visualizar los datos en pantalla se usa cuando mucho 6 líneas de código, sin embargo hay muchos espacios o celdas desperdiciadas.

Es por eso que no se cual es la mejor opción. Usar mas líneas de código o dejar espacios desperdiciados en la matriz.

Saludos
  #10 (permalink)  
Antiguo 15/02/2011, 17:36
 
Fecha de Ingreso: septiembre-2007
Mensajes: 76
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Uso de variables en Keys de matrices

Muchas gracias por sus comentarios.
Todos ellos muy validos, pero desde mi particular punto de vista el problema de no preocuparse por estos detalles es que mientras mas grande sea la BD mas tiempo se ocuparía en dar una respuesta y más si tu BD crece exponencialmente cada mes.

Es por eso que es mejor preocuparse ahora por estos detalles que mas adelante estar parchando o incluso rediseñando código para "optimizar" tus consultas.
  #11 (permalink)  
Antiguo 15/02/2011, 18:18
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Uso de variables en Keys de matrices

Cita:
Iniciado por israbart Ver Mensaje
Muchas gracias por sus comentarios.
Todos ellos muy validos, pero desde mi particular punto de vista el problema de no preocuparse por estos detalles es que mientras mas grande sea la BD mas tiempo se ocuparía en dar una respuesta y más si tu BD crece exponencialmente cada mes.

Es por eso que es mejor preocuparse ahora por estos detalles que mas adelante estar parchando o incluso rediseñando código para "optimizar" tus consultas.
En realidad esto que dices no tiene nada que ver con lo que preguntaste, es tema de diseño.
__________________
Saludos.
  #12 (permalink)  
Antiguo 15/02/2011, 18:32
 
Fecha de Ingreso: septiembre-2007
Mensajes: 76
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Uso de variables en Keys de matrices

Cita:
Iniciado por JaimeSavines Ver Mensaje
En realidad esto que dices no tiene nada que ver con lo que preguntaste, es tema de diseño.
Entonces quiere decir que el desperdiciar o no celdas en una matriz no tiene nada que ver con el tiempo que se tarda al servidor en procesar la información sino es mas bien cuestion de la presentación de datos? o no entendi que es lo que quisiste decir con que no tiene nada que ver con lo que pregunte.
  #13 (permalink)  
Antiguo 15/02/2011, 18:40
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Uso de variables en Keys de matrices

Cita:
Iniciado por jonasanx Ver Mensaje
Bueno, pues ya es gusto de cada quien, por mi parte al crear aplicaciones suelo optimizarlas lo mejor posible, si se que algo es mas rapido que otro algo, pues lo implemento, así de fácil. Y es cierto, una infraestructura flexible es la base de cualquier aplicación que pretende escalarse.
Estoy de acuerdo sobre la optimización, pero no desde el punto de vista que propones preocúpate por hacer análisis de los algoritmos que estas usando y del diseño que propones como solución, por que desde el punto de vista que discutes va ser mejor programar estructurado por que la creación de un objeto va a consumir mas mili segundos y mas recursos.
__________________
Saludos.
  #14 (permalink)  
Antiguo 15/02/2011, 18:54
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Uso de variables en Keys de matrices

Cita:
Es por eso que es mejor preocuparse ahora por estos detalles que mas adelante estar parchando o incluso rediseñando código para "optimizar" tus consultas.
Si tu diseñas un modelo adecuado acorde a tu dominio del problema no tienes por que tener problemas a futuro que requieran cambios drasticos. Las consultas a la base de datos no tiene realacion directa con el lenguaje que usas para acceder a esos datos. si quieres optimizar consultas lo haces en el SGBD no en el lenguaje. si tu haces un mal diseño es posible que termines haciendo mas consultas de las necesarias y compliques la programación y por ende tengas que hacer todo lo que quieres evitar.

Y cuando dije que no tenia relacion fue por que iniciaste el tema preguntando la diferencia entre usar un key como variable o como constante con respecto al tiempo y se desvió a otra cosa.
__________________
Saludos.
  #15 (permalink)  
Antiguo 15/02/2011, 19:00
 
Fecha de Ingreso: septiembre-2007
Mensajes: 76
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Uso de variables en Keys de matrices

Si, tienes toda la razón ya nos desviamos del tema. Creo que hace unas 7 respuestas atras se había resuelto el tema.

Agradezco todos sus comentarios, nuevamente me abrieron los ojos a un mundo lleno de posibilidades. Ahora me toca explorar esas posibilidades para poder encontrar con la solución más optima.

Saludos y hasta pronto.
  #16 (permalink)  
Antiguo 15/02/2011, 20:10
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Uso de variables en Keys de matrices

Como comentario adicional y auto corrigendo mis mensajes anteriores el tipo de asignación por la cual se inicio este tema no es del orden de los mili segundos, es del orden de los micro-segundos. Una disculpa por el error.

Y bueno de eso se trata el foro de estar abiertos al debate y mediante el, sacar una conclusión que sea de provecho.
__________________
Saludos.

Etiquetas: keys, matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:58.