Foros del Web » Programando para Internet » PHP »

Código lento.

Estas en el tema de Código lento. en el foro de PHP en Foros del Web. Hola amigos, acabo de hacer un código para q me genere todas las combinaciones posibles(de a 5) de 50 números pero mi PC se bloquea.... ...
  #1 (permalink)  
Antiguo 12/04/2012, 17:02
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Código lento.

Hola amigos, acabo de hacer un código para q me genere todas las combinaciones posibles(de a 5) de 50 números pero mi PC se bloquea.... Tengo un Core 2 Duo a 2.00 GHZ. Quiero tener una idea si es el código o es muy lenta mi unidad de procesamiento.

Acá mi código:

<?php

$cin = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 ,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,3 5,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50);

for($x=0; $x<46; $x++)
{

for($a=1; $a<47; $a++)
{
if($x<$a)
{
for($b=2; $b<48; $b++)
{
if($a<$b)
{
for($c=3; $c<49; $c++)
{
if($b<$c)
{
for($d=4; $d<50; $d++)
{
if($c<$d)
{
echo $cin[$x]."-".$cin[$a]."-".$cin[$b]."-".$cin[$c]."-".$cin[$d]."+++";
}}}}}}}}}
?>
  #2 (permalink)  
Antiguo 12/04/2012, 22:27
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Código lento.

Evidentemente el código es 'lento' por la cantidad de bucles que has puesto.
El tema que la maquina se bloquee es otra cosa, depende del sistema operativo.
Puedes ejecutar el script desde linea de comandos para evitar cualquier problema con el navegador pero lo ideal sería que arregles el programa. Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 13/04/2012, 06:02
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Código lento.

Gracias repara2 por tu respuesta... Te comento más.
Soy novato programando, este es mi primer código, quisiera saber si le corre a alguien, debe dar 2.118.760 combinaciones de 5 números. Con los bucles for fue la única forma q se me ocurrió. Si está bien el código es una pena q no corra en PC como el mío.

Tengo Windows 7 y no sé como hacerlo por consola, me puedes ayudar..

Nota: Se bloquean los navegadores(Mozila y Explorer), no la máquina.

Última edición por alex760125; 13/04/2012 a las 06:17
  #4 (permalink)  
Antiguo 13/04/2012, 07:34
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Código lento.

así se hace en javascript
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 13/04/2012, 07:47
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Código lento.

Cita:
Iniciado por IsaBelM Ver Mensaje
Te agradezco.... Pero estoy con PHP. El cálculo ya lo tengo, necesito obtener cada una de las combinaciones, por eso el código.
  #6 (permalink)  
Antiguo 13/04/2012, 08:10
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 3 meses
Puntos: 194
Respuesta: Código lento.

Tu código en php tira un error de sintaxis primeramente. El 35 tiene un espacio en el medio. Sin eso funciona bien
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #7 (permalink)  
Antiguo 13/04/2012, 08:23
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Código lento.

Cita:
Iniciado por h2swider Ver Mensaje
Tu código en php tira un error de sintaxis primeramente. El 35 tiene un espacio en el medio. Sin eso funciona bien

Hola amigo h2swider, puedes ser más explícito porque no lo encuentro. Si te refieres al número 35 en el array, lo tengo junto(bien) en Dreamweaver. Puedes decirme q procesador tienes?
Gracias.

Última edición por alex760125; 13/04/2012 a las 08:31
  #8 (permalink)  
Antiguo 13/04/2012, 08:41
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 3 meses
Puntos: 194
Respuesta: Código lento.

En el código que nos otorgaste, el 35 tiene un espacio en el medio. Desconozco si en tu entorno de desarrollo esta o no corregido. Pero es un error de sintaxis

Tengo un core 2 duo 2.4m, no es mucho y sin embargo funciona. Tal vez deberías aumentar el tiempo de ejecución de tus scripts y la memoria asignada en el php.ini para que te funcione adecuadamente.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #9 (permalink)  
Antiguo 13/04/2012, 08:54
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Código lento.

Cita:
Iniciado por h2swider Ver Mensaje
En el código que nos otorgaste, el 35 tiene un espacio en el medio. Desconozco si en tu entorno de desarrollo esta o no corregido. Pero es un error de sintaxis

Tengo un core 2 duo 2.4m, no es mucho y sin embargo funciona. Tal vez deberías aumentar el tiempo de ejecución de tus scripts y la memoria asignada en el php.ini para que te funcione adecuadamente.
Tengo dos, php.ini-developer, php.ini-production...... Abrí el primero y encontré esto:

max_input_time
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)

Es ahí donde se cambia.. Q tiempo recomiendas poner?
Recuerda q soy novato, agradezco los detalles.
  #10 (permalink)  
Antiguo 13/04/2012, 09:03
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Código lento.

ahhhhh!! pensé que pretendías obtener es el cálculo. de ahí que te dejara esa liga en javascript para que adaptases el código a php

como te han comentado, has de generarlo con la línea de comando para evitar problemas en el navegador
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Última edición por IsaBelM; 16/04/2012 a las 15:12
  #11 (permalink)  
Antiguo 13/04/2012, 09:10
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 3 meses
Puntos: 194
Respuesta: Código lento.

el php.ini a editar se encuentra en la carpeta apache/bin

max_execution_time = 1800 ;
max_input_time = 60 ;
memory_limit = 128M ;

Igualmente, seria una buena idea que ejecutes tu script por consola como te indicaron mas arriba.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #12 (permalink)  
Antiguo 13/04/2012, 09:46
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Código lento.

Cita:
Iniciado por IsaBelM Ver Mensaje
ahhhhh!! pensé que pretendías obtener es el cálculo. de ahí que te dejara esa liga en javascript para que adaptases el código a php

como te han comentado, has de generarlo con la línea de comando

para evitar problemas en el navegador
No sé cómo hacerlo por consola...

C:\User\Alex>esto es lo primero q aparece y no sé cómo salir de ahí.
  #13 (permalink)  
Antiguo 13/04/2012, 09:48
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Código lento.

Cita:
Iniciado por h2swider Ver Mensaje
el php.ini a editar se encuentra en la carpeta apache/bin

max_execution_time = 1800 ;
max_input_time = 60 ;
memory_limit = 128M ;

Igualmente, seria una buena idea que ejecutes tu script por consola como te indicaron mas arriba.
Logré obtener un poco más de combinaciones cambiando max_execution_time = de 60 a 1800 pero pasa lo mismo se bloquea el navegador. Tengo wamp server con Apache 2.2.17


Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 1800

; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time = 60

; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
;max_input_nesting_level = 64

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M

Última edición por alex760125; 13/04/2012 a las 10:24
  #14 (permalink)  
Antiguo 13/04/2012, 16:24
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Código lento.

Y si cambio la memoria a utilizar puede mejorar?
Tengo 2Gb de ram.
  #15 (permalink)  
Antiguo 13/04/2012, 18:35
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Código lento.

Cita:
Iniciado por alex760125 Ver Mensaje
Y si cambio la memoria a utilizar puede mejorar?
Tengo 2Gb de ram.
Hice cambio en la memoria de 128m a 1000m y no se soluciona mi problema.
  #16 (permalink)  
Antiguo 13/04/2012, 19:16
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Código lento.

Cita:
Iniciado por h2swider Ver Mensaje
En el código que nos otorgaste, el 35 tiene un espacio en el medio. Desconozco si en tu entorno de desarrollo esta o no corregido. Pero es un error de sintaxis

Tengo un core 2 duo 2.4m, no es mucho y sin embargo funciona. Tal vez deberías aumentar el tiempo de ejecución de tus scripts y la memoria asignada en el php.ini para que te funcione adecuadamente.

Sabes q si te funciona mi código parece entonces q yo no he cambiado bien los valores en php.ini pero pasa q así no lo encuentro en mi server wamp.

C:\wamp\bin
Acá tengo las carpetas apache, mysql, php. Yo entré en apache y me aparece otra Apache2.2.17 y acá entre en bin y cambié los valores en un archivo q dice solamente php q en tipo me dice opciones de configuración.

Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 1800

; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time = 60

; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
;max_input_nesting_level = 64

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M


Cuando entro en C:\wamp\bin\php\php5.3.5 me encuentro con otro archivo q dice php opciones de configuración:

php.ini Options ;
;;;;;;;;;;;;;;;;;;;;
; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"
;user_ini.filename = ".user.ini"

; To disable this feature set this option to empty value
;user_ini.filename =

; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes)
;user_ini.cache_ttl = 300


Resource Limits ;
;;;;;;;;;;;;;;;;;;;

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 1800

; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time = 60

; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
;max_input_nesting_level = 64

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M



Cambié ambos como pueden ver y nada. Mi navegador Mozilla(q también actualicé) se sigue bloqueando y no termina la ejecución.

Última edición por alex760125; 13/04/2012 a las 21:46
  #17 (permalink)  
Antiguo 14/04/2012, 10:03
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Código lento.

Problema resuelto.

Para quien tenga el mismo problema les recomiendo Chrome, mi código corre súper rápido. Mozilla tiene tanta fama entre los desarrolladores q dejé la prueba en Chrome para último pensando q era otro el problema. Gracias a los q contestaron mi tema.
  #18 (permalink)  
Antiguo 16/04/2012, 15:10
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Código lento.

aunque ya lo tienes resuelto, lo dejo para futuras lecturas

pongamos que quieres hacer un "hola mundo". has de escribir esto
Cita:
php -r "echo 'hola mundo';"
lo marcado en rojo es "invariable"

te preguntarás que es eso de (-r). escribe
Cita:
php -hswitch
y obtendrás la lista de opciones que provee php. si ahora escribes
Cita:
php -v
sabrás si el php que tienes es CGI o CLI

para mas info
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
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 22:17.