Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Que hacer cuando compilar es un trauma? (https://www.clubdelphi.com/foros/showthread.php?t=61718)

dnieto 19-11-2008 15:42:50

¿Que hacer cuando compilar es un trauma?
 
Hola a tod@s.
A ver si hay alguien que me pueda echar un cable.:D

En mi curro se trabaja con Delphi 7/Oracle (hasta aqui no hay problema), pero cuando modifico cualquier proyecto y compilo, puede tardar de 5 a 15 minutos hasta que termina.
No es un problema de que los proyectos sean grandes (con el que estoy ahora tienen menos de 2500 lineas, tiene 4 formularios y tarda lo mismo).
No es un problema de rendimiento de mi maquina (ya mire el administrador de tareas y el espacio libre del disco duro)
No es un problema de la bbdd ya que su rendimiento es optimo.
Creo que tampoco es un problema de red ya que trabajo en local y ninguno de los paquetes de componentes esta en red.
Lo unico caracteristico es que tengo instalados una barbaridad de paquetes con mogollon de componentes (de los cuales en el proyecto a lo mejor utilizo una docena) pero no se si esto afecta realmente o no en el tiempo de compilación.
Ya probe a cargarme los DCU y volver a compilar y sigo en las mismas.
¿Puede que tenga algo que ver el echo de trabajar con XP?


¿Alguien podría indicarme un libro/link/.../..., donde se explique si se puede y como optimizar las compilaciónes?

Gracias anticipadas :)

donald shimoda 19-11-2008 16:33:36

Cita:

Empezado por dnieto (Mensaje 326783)
Hola a tod@s.
A ver si hay alguien que me pueda echar un cable.:D

Gracias anticipadas :)

Le apuesto mis 20 pesos al antivirus. Desactivalo al compilar y compara la velocidad.

Si es el antivirus añade todas las extensiones de pascal e intermedias a las excepciones del AV y sale con fritas.

Saludos

Ñuño Martínez 19-11-2008 16:59:19

Respecto al disco, no sólo mires la cantidad de espacio libre sino también y sobre todo su distribución. Defragmentalo porque eso suele acelerar muchísimo las cosas.

coso 19-11-2008 19:53:38

Hola, puedes probar de cambiar los paquetes de componentes que usa tu proyecto (Project->Options->Packages) para que no tenga que linkarlos todos (creo que va por alla la cosa). Tambien, si tienes los .dpk, cambiarlos todos a 'explicit rebuild' (.dpk->Project Options->Description), o ya mas directamente, desinstalarlos y instalarlos en el momento en que los necesites. Como te decia al principio, creo que es mas el problema de linkarlos todos. saludos.

locotenentul 20-11-2008 02:10:49

eres un afortunado...
 
Ya se que lo que voy a decir no te aydara nada pero lo digo.
Yo trabaje en una compania donde la compilacion tardaba mas de 2 horas en hacerse...es decir, una barbaridad...eran mas de 5 millones de lineas de codigo...en otra la compilacion duraba 1 ora y algo...asi que eres un afortunado amigo:)

Locotenentul

donald shimoda 20-11-2008 02:20:49

Cita:

Empezado por locotenentul (Mensaje 326920)
Ya se que lo que voy a decir no te aydara nada pero lo digo.
Yo trabaje en una compania donde la compilacion tardaba mas de 2 horas en hacerse...es decir, una barbaridad...eran mas de 5 millones de lineas de codigo...en otra la compilacion duraba 1 ora y algo...asi que eres un afortunado amigo:)

Locotenentul

Pero no estamos hablando de IBM S/360 eh? :D:D

No seriamente, lo que cuentas es con DELPHI? Yo compilo a diario proyectos con 1 millón de lineas, que tardan 30 segundos en compilar, no veo la relación a 2 horas???

Y eso que están en una unidad truecrypt con tres algoritmos de encriptado, accedida a través de virtualbox, mejor dicho peor imposible.:p:p

Saludos

Kipow 20-11-2008 05:58:34

Cita:

Empezado por donald shimoda (Mensaje 326921)
Pero no estamos hablando de IBM S/360 eh? :D:D

No seriamente, lo que cuentas es con DELPHI? Yo compilo a diario proyectos con 1 millón de lineas, que tardan 30 segundos en compilar, no veo la relación a 2 horas???

Y eso que están en una unidad truecrypt con tres algoritmos de encriptado, accedida a través de virtualbox, mejor dicho peor imposible.:p:p

Saludos

Yo igual mi proyecto principal es de 1millon de lineas aprox y no tarda casi nada, creo que no nos has dicho en que equipo estas compilando, porque is es un 286 pues creo que si tardaria algo en compilar.

Donald como es eso del virtualbox, el Delphi lo tenes en el Virtualbox y la info en otro disco aparte con el truscrypt?, yo quiero ver si hago eso pero usando como S.O. host ubuntu, que ya me harte de las BSOD

dnieto 20-11-2008 09:28:24

Cita:

Empezado por coso (Mensaje 326842)
cambiar los paquetes de componentes que usa tu proyecto (Project->Options->Packages) para que no tenga que linkarlos todos (creo que va por alla la cosa). Tambien, si tienes los .dpk, cambiarlos todos a 'explicit rebuild' (.dpk->Project Options->Description), saludos.

Gracias a todos ;)
Prove lo de quitar el Antivirus y si, parece que reduce notablemente el tiempo de compilación, pero ya me han dicho los de sistema que si vuelvo a inhabilitar el antivirus me dan una colleja. :(
Respecto a lo de Defragmentar el Ordenador lo hice hace una semana (lo cual mejoro algo el tiempo de compilación pero seguia tardando mucho).
Respecto a lo que dijo coso :
Del primer consejo : Muchas gracias, me armare de paciencia y probare (esta gente tiene unos 130 paquetes de componentes)
Del segundo consejo : ¿A que te refieres?, no he encontrado el apartado descripción :cool:
De todas formas, si el problema, crees que puede ir por el tema de tener tantos paquetes de componentes, ¿no hay alguna forma de configurarlo para que solo compile los objetos existentes independientemente del proyecto?

Vuelvo a decirlo, muchas gracias a todos :D

Neftali [Germán.Estévez] 20-11-2008 10:20:42

Veo que llego un poco tarde, pero intentaré dar mi opinión.
Nosotros nos hemos ido encontrando con este problema, a medida que los paquetes de la aplicación han ido creciendo. En nuestro caso la aplicación está formada por multitud de paquetes que dependen unos de otros, aparte de los de la VCL, y los de componentes de terceros.

(1) En cuento al antivirus, si no te dejan desactivarlo; Aunque yo intentaría replantearle esto a los de sistema, explicándoles que va a hacerse durante las compilaciopnes, lo que sí puedes hacer es añadirle determinadas excepciones en cuanto a tipos de ficheros directorios y demás, para que "deje un poco tranquilos" a los ficheros de tu proyecto.

(2) DelphiSpeedUp, FastMM y demás añadidos pueden mejorar un poco la velocidad del procesador a la hora de compilar.

A parte de estas, hay otras dos cosas que a nosotros y para nuestro caso han sido "drásticas" y decisivas a la hora de compilar/ejecutar.

La primera va en relación a la que ha dicho coso, intentar siempre que vas a compilar desinstalar todos los packages del proyecto.
Y la segunda, después de mucho pelearme con AQTime y los tiempos de carga de packages llegamos a la conclusión de que esta línea:

Código Delphi [-]
    CheckForDuplicateUnits(Module);

que hay en la Unit SysUtils demora "tremendamente" la carga de packages.

Piensa que si estás compilando el package A y este package lo necesita B que está instalado, antes de compilar A, Delphi descarga B, luego compila A y luego vuelve a cargar B. Piensa qué pasa si tienes 25 packages en tu aplicación.

Así que la solución fue modificar SysUtils para que no ejecutara este procedimiento con nuestros packages y volver a recompilar la VCL.

Un saludo.

coso 20-11-2008 11:09:04

Hola de nuevo, ese apartado esta en el 'project->options' de cada .dpk, o sea del paquete. Lo bueno seria que tuvieras todos los componentes ya compilados y, si debes hacer algun cambio en ellos, entonces mandar tu compilar aquel paquete en concreto (explicit rebuild).

Cita:

llegamos a la conclusión de que esta línea:
Código Delphi [-] CheckForDuplicateUnits(Module);

que hay en la Unit SysUtils demora "tremendamente" la carga de packages.
buen truco

Ñuño Martínez 20-11-2008 11:11:16

Se me acaba de ocurrir que una posible causa podría ser la cláusula USES. Delphi tiende a añadir módulos automáticamente a USES y no quita los que no utiliza. Esto hace que se añadan dependencias innecesarias que obligan a recompilar unidades sin que estas hayan cambiado.

Por ejemplo, cada vez que se crea una ventana o diálogo (Form) Delphi lo añade a la cláusula USES del módulo principal (el archivo DPR) aunque este no lo utilice. Además, suele crear un objeto y lo añade al objeto Application.

En las opciones de compilación hay opciones para evitar esto, de forma que sólo se añadan al módulo principal aquellas unidades, módulos y ventanas que se necesiten.

Si puedes, revisa las listas USES a ver si hay unidades que no necesiten. Recuerda que las dependencias a veces se dan en cascada, y que una única unidad "no necesaria" puede provocar que se recompilen varios archivos. Yo lo hice con un proyecto de punto de venta hace años y realmente aceleró la compilación, aunque nunca llegó a ser de más de veinte minutos.

donald shimoda 20-11-2008 12:35:17

Cita:

Empezado por dnieto (Mensaje 326941)
Gracias a todos ;)
Prove lo de quitar el Antivirus y si, parece que reduce notablemente el tiempo de compilación, pero ya me han dicho los de sistema que si vuelvo a inhabilitar el antivirus me dan una colleja. :(
:D

Amigo , no necesitas desactivarlo. Dile a los cerebritos de sistema que lo configuren para que NO chequee *.pas *.dfm *.dcu *.dpk , habría otros temporales que agregar que ahora no recuerdo pero con eso rulas (la ventaja de usar un entorno virtualizado con escaneo automatico desactivado :p:p).

Saludos.

donald shimoda 20-11-2008 12:37:06

Cita:

Empezado por Kipow (Mensaje 326934)
Yo igual mi proyecto principal es de 1millon de lineas aprox y no tarda casi nada, creo que no nos has dicho en que equipo estas compilando, porque is es un 286 pues creo que si tardaria algo en compilar.

Donald como es eso del virtualbox, el Delphi lo tenes en el Virtualbox y la info en otro disco aparte con el truscrypt?, yo quiero ver si hago eso pero usando como S.O. host ubuntu, que ya me harte de las BSOD

En Ubuntu monto mis unidades truecrypt y las accedo a través de carpetas compartidas de virtualbox. Delphi esta en VMs de virtualbox, exacto. Es mas tengo varias porque siempre testeo betas de RemObjects por ejemplo, y ahora mismo Prism. Para evitar cualquier problema, agarro una VM con Xp virgen (casi como agarrar un cd virgen ) y le instalo lo que deseo probar y nadie sale lastimado. ;)

Saludos.

dnieto 21-11-2008 08:41:11

Un millon de gracias a todos :D por vuestro conocimiento y vuestro tiempo:D:D

cHackAll 22-11-2008 00:54:25

Cita:

Empezado por dnieto (Mensaje 327154)
Un millon de gracias a todos :D por vuestro conocimiento y vuestro tiempo:D:D

Solucionaste el problema? seria bueno que nos comentes la causa y solucion no?, pues yo estoy perdido!


La franja horaria es GMT +2. Ahora son las 12:58:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi