while True
tny
a.porrua en gmail.com
Jue Nov 9 19:39:23 CET 2006
El jue, 09-11-2006 a las 00:18 -0500, Arnau Sanchez escribió:
> tny escribió:
> > Acepto que desde el punto de vista del desarrollo sea más cómodo y clara
> > lo del 'while True:' pero punto de vista de la ejecución prefiero lo de
> > 'x=loquesea\nwhile x:'
> >
> > Tal vez para enviar un archivo no tenga mucha importancia, pero si puedo
> > escoger me quedo con la opción más rápida.
> >
> > Ejemplo.
> > ....
> > ....
> > prueba1 tardo 4 segundos
> > prueba2 tardo 6 segundos
> >
> >
> Indiscutiblemente la primera opción será siempre la más rápida. Pero esa
> relación 4/6 que obtienes -para hacer un control más fino del tiempo
> puedes usar time.time()- no es del todo realista, ya que ése es el peor
> de los casos (el bucle no hace nada). En general, el tiempo dedicado al
> proceso de los datos será mucho mayor que el del control del bucle, y la
> mejora que obtengas será casi despreciable.
>
> En cualquier caso, en este tema soy muy parcial: tiendo a primar
> claridad frente a velocidad, y mucho más en Python, que es un lenguaje
> que te obliga a ello de forma natural. Sólo si compruebo que esa
> preciosa y estilada función es el cuello de botella de mi script
> intentaré optimizarla (ya sabes, el famoso "premature optimization is
> the root of all evil")
>
> En este caso concreto, como dice el FAQ, la cuestión es que repetir esa
> línea es una fuente de errores: si cambias la forma en que obtienes los
> datos es probable que te olvides de modificar una de ellas (más aquí,
> que quedan en extremos opuestos del bucle). En general, si repito líneas
> (o trozos de codigo) en un programa considero que algo no anda bien.
>
> Y por último, apelaré al resbaladizo argumento de autoridad: el código
> de la librería oficial de python está plagado de bucles while True/if
> not condition/break. ;-)
> > No pretendo discutir por discutir, mi intención es que podamos aprender
> > todos un poco,
> Por supuesto, de eso se trata. Aunque si no participa nadie más será que
> no interesa mucho, y si te parece lo dejamos en empate :-)
> > que me saquéis de mi error si estoy equivocado, y mostrar
> > el verdadero camino de la serpiente si soy un iluminado del fósforo
> > verde. XD
> >
> Pues si tengo que ser yo quien te muestre el verdadero camino de la
> serpiente, que aterricé por casualidad, con un triple salto mortal,
> desde el ensamblador x86 directamente en Python... :-D
>
> salud
Mejor que un empate, ganamos todos.
Hablando de ensamblador...
Se necesita a alguien para programar PICs, concretamente imprimir con un
cabezal de impresión lo que llegue por serie.
El jue, 09-11-2006 a las 11:08 -0500, Gerardo Juarez escribió:
> Interesante tu prueba. La duda que me surge es si, en el contexto real
> en
> el que correra tu programa, podrias detectar esta diferencia. Porque
> ya en
> el, tu programa correra con otros procesos, que tal vez le roben
> tiempo de
> CPU, ademas de latencia en la red, que despues de todo, es el eslabon
> mas
> debil de toda la construccion que tienes. Yo creo que las variaciones
> de
> rendimiento que obtendras de una corrida a otra son mayores que la
> diferencia de un tipo a otro de ciclo.
>
> En general, considerando que tu aplicacion hara muchas mas cosas que
> recibir datos, las optimizaciones creo que estarian por otro lado,
> como,
> por ejemplo, encontrar una forma de que la informacion a recibir sea
> la
> menor posible. Por ejemplo, si tienes una capa de compresion en ambos
> lados de la transmision, y dependiendo del contenido y volumen a
> transmitir, puede ser la mejor opcion, aunque a nivel de simples
> ciclos
> por segundo sea mucho mas lenta.
>
> saludos
> Gerardo
Yo no soy el de los sockets ;)
Mi trabajo, por el momento, consiste en hacer todo lo posible para poder
utilizar las máquinas que hay allá donde vamos, máquinas de las que no
tenemos ningún tipo de documentación o driver, y que valen demasiado
dinero como para sustituirlas.
Para ello tengo hacer, entre otras cosas, muchas fuerzas brutas donde
una instrucción de más puede implicar horas o incluso días de más.
La siguiente fuerza bruta que me toca es justo el caso contrario:
Enviar 2**16 mensajes modificados a una máquina a ver si 'traga' con
alguno...
En éste caso la mayor parte del tiempo se lo lleva la máquina.
Cuando sepa comunicarme con la máquina (de S&B), haré el programa que la
controle (sin ser tan tiquismiquis con la velocidad).
Y antes de tener tiempo para brindar con sidra, vuelta a pelearme con
otra máquina muy parecida, pero de otros fabricantes (telvent).
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es