FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Cita:
LineComment Saludos Última edición por roman fecha: 23-04-2017 a las 00:25:44. |
#2
|
||||
|
||||
Cita:
¡Estupendo!, al ver que has reducido el tiempo de ejecución a la mitad usando ingenio puro. Sólo resta mejorar aún más la velocidad de ejecución, aprovechando las nuevas herramientas, sin ser algo perfecto porque faltaría el tema del ordenamiento (aunque en el ejercicio no piden que sea ordenado)... así: Agregando al uses las unidades System.Threading y System.SyncObjs...
Ejecutando este mismo ejercicio hasta 10000 en lugar de 1000, en mi maquina con el método anterior se demoró 3150 milisegundos en promedio, sin embargo con el segundo método 295 milisegundos en promedio. O cuando lo subí a 100000 el promedio con el ejercicio anterior fue de 33843 milisegundos, mientras que con el segundo ha sido de 2900 milisegundos.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ Última edición por jhonny fecha: 23-04-2017 a las 06:56:43. |
#3
|
||||
|
||||
¿Eso es de los últimos delphi? ¿qué hace, aprovechar el multiproceso?
|
#4
|
||||
|
||||
Así es , tengo entendido que Lazarus también tiene TParallel pero recibe es un puntero a un procedimiento... aunque no lo he probado.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#5
|
||||
|
||||
El código puede escribirse de muchas formas pero lo que lo retrasa el la línea Memo1.Lines.Add(
Si hacemos que el memo se escriba por mensajes, cualquiera de las formas se ejecuta en menos de 10 milisegundos:
Los bucles terminarán en escasos milisegundos aunque el Memo tardará en llenarse de forma ordenada lo que tarde Windows en tramitar la cola de mensajes. Saludos. |
#6
|
||||
|
||||
Se puede almacenar en memoria y luego, al terminar, asignarlo al memo. Así será incluso más rápido.
|
#7
|
||||
|
||||
Hola.
Si, el método Add es muy lento; yo he obtenido buenos resultados operando sobre una variable de tipo string y asignándola luego a la propiedad Text. Resultados para 1000 números usando la propuesta de roman en todos los casos: Código:
Concatenando : 203 µs. Mensaje : 261 µs. Método Add : 3320579 µs. Saludos Edito: Mas o menos como lo que dijo Casimiro mientras componía este
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 23-04-2017 a las 22:32:48. |
#8
|
||||
|
||||
Cierto, el manejo de cadenas de texto suele ser siempre lo más lento de todo.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Copiar números impares de un listbox a otro | ale4132 | Varios | 5 | 17-12-2012 19:33:10 |
Consulta Desde->Hasta | Luis M. | Firebird e Interbase | 6 | 30-07-2008 19:40:34 |
1000 Mil M 0011 1110 1000 3e8 | sakuragi | La Taberna | 29 | 05-03-2008 18:28:56 |
Poner puntos a los números mayores de 999 y hasta 1M | Pedro-Juan | Trucos | 2 | 26-12-2007 19:13:08 |
Factorial hasta 1000 | Cheswar | Varios | 29 | 21-09-2007 20:43:27 |
|