Jump to content
MarcosPeixoto

Delphi Berlim - Lentidão na Compilação Debug

Recommended Posts

Olá, 

 

De um tempo para cá, ao compilar o sistema em modo debug, passou a demorar bastante para abrir a aplicação, o que torna bastante improdutivo quando existe a necessidade de depurar processos. 

 

Utilizo o Delphi Berlim, Update 1, instalei o IDE Fix e FastDCC64 que teoricamente corrige bugs e otimiza carregamento do delphi. 
Utilizo componentes de terceiros como ACBr, FastReports, GExperts, JEDI, TMS, ActiveQueryBuilder, etc... 
O Sistema Operacional é Win 10, atualizado com versão 1803, Core i5, 8Gb, HD SSD. 
Minha estrutura é multicamadas, e no caso o servidor já está levantado. 

 

Monitorando no "Event Log" do delphi ao compilar, são apresentadas várias mensagens de carregamento de recursos de dlls e é nesse ponto que há uma lentidão enorme. 
São apresentadas mensagens "Module Load: " + nome da dll + " No Debug Info". Segue algumas linhas que são apresentadas como exemplo: 

 

Citar

 

Thread Start: Thread ID: 10400. Process NomeDaAplicacao.exe (6444) 
... 
Module Load: ntdll.dll. No Debug Info. Base Address: $77B00000. Process NomeDaAplicacao.exe (6444) 
Module Load: KERNEL32.dll. No Debug Info. Base Address: $76E10000. Process NomeDaAplicacao.exe (6444) 
Module Load: OLEAUT32.dll. No Debug Info. Base Address: $77970000. Process NomeDaAplicacao.exe (6444) 
... 
Thread Start: Thread ID: 1476. Process NomeDaAplicacao.exe (6444) 
Module Load: combase.dll. No Debug Info. Base Address: $76B40000. Process NomeDaAplicacao.exe (6444) 
Module Load: ClienteTek.dll. No Debug Info. Base Address: $0B6A0000. Process NomeDaAplicacao.exe (6444) 
Module Unload: ClienteTek.dll. Process NomeDaAplicacao.exe (6444) 
Module Load: ClienteTek.dll. No Debug Info. Base Address: $0B6A0000. Process NomeDaAplicacao.exe (6444) 
Module Unload: ClienteTek.dll. Process NomeDaAplicacao.exe (6444) 
... 

 

 

Notei que algumas dessa dlls são apresentadas mais de uma vez, me parecendo fazer carregamento das mesmas coisas repetidas vezes, suponho ser uma anormalidade. 

Para se ter uma idéia, para um dos meus menores módulos, o executável compilado em debug fica com cerca de 100Mb e leva aproximadamente 6 minutos para ser gerado. 
O mesmo executável compilado em modo release, fica com 8.8Mb, e leva menos de 1 minuto para ser gerado. 

 

Não consegui identificar ainda as causas disso. Alguém passou por essa situação ou tem alguma sugestão? 

 

Marcos

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By carlos melo
      Boa noite, trabalho com Delphi e estou tendo dificuldade em fazer conexão com meu servidor que esta na argentina, uso o firedac para fazer a conexão com o banco, so que o comando que estou utilizando esta dando erro e não sei se estou configurando certo a minha query.
       
      Ja criei os linked server e tambem não resolveu......
       
       uso um select dentro do delphi dessa maneira : 
      DELPHI
      FDQuery e dentro uso esse select
      Select * from [192.168.XX.XXX].banco.dbo.tabela direcionando para o meu servidor que esta na argentina sendo 192.168.xx.xxx o ip do servidor de la e o nome do banco é servicos e a tabela ordens.
       
      Se alguem conhece ou ja fez esse tipo de conexão , estou precisando dessa grande ajuda...
       
      obrigado
    • By andreluis78
      Olá a todos.
      Criei um procedimento para verificar se um usuário está cadastrado no banco de dados.
      Utilizo Firebird como BD e componentes Zeos para acessar o banco.
      Resolvi criar uma query em tempo de execução para fazer a verificação. Não dá nenhum erro, porém, quando digito o nome do usuário no Edit e clico
      no botão que executa o procedimento, ele dá ''usuário inexistente'', mesmo se o nome do usuário estiver cadastrado no banco.
       
      Segue o código:
       
      procedure Tfrm_login.SpeedButton1Click(Sender: TObject); var Qry : TZQuery; begin   Qry:=TZQuery.Create(nil);   Qry.Connection := dm_dados.ZConnection1;  //componente de conexão   Qry.SQL.Add('select codigo, nome, acessar, user, pass from clientes');   Qry.Open;   if Qry.Locate('USER',Edit1.Text,[]) then   begin     ShowMessage('usuário cadastrado');   end   else   begin     ShowMessage('usuário inexistente');     Edit1.SetFocus;   end;   FreeAndNil(Qry); end;  
      Se alguém puder ajudar agradeço desde já.
      Obrigado
    • By gabrielmdn
      Boa noite meus amigos.
       
      Estou com um problema enorme aqui. Precisei formatar o PC, e entao fiz um backup de tudo que tenho..normal 
      Quando abri o meu projeto no delphi e pedi para compilar ele parou na linha 114 e começou a aumentar os erros. Deixei por duas horas para ver até onde ia...e continuou
      Não tenho ideia do que esta acontecendo. Se não tivesse forçado a parada forçada nao teria parado até agora. 
       
      Alguem ja passou por isso? Estou bem preocupado, pois isso nunca me aconteceu.

    • By Karlo Uchoa
      Boa tarde meus amigos,  Estou implementando uma integração entre um banco de dados local e outro na nuvem da Amazon. Estou com um problema sério aqui: ao fazer o Putclientes, por exemplo, ou seja, ao enviar ao servidor as alterações e inserções do Banco local, se, após um insert em lote na tabela da nuvem, o Result da função Put não conseguir retornar ao cliente rest que o chamou, por uma queda do link de internet, por exemplo, esses inserts já foram commitados na nuvem, mas os relacionamentos entre o código externo gerado e o código interno enviado, não pode ser concebida. Sendo assim, no próximo Put, os clientes sem a relação entre os códigos, serão inseridas novamente, gerando duplicidade de cadastros na nuvem. Meu problema é saber como commitar a transação na nuvem somente após o Result chegar ao cliente rest que fez a chamada. Alguém pode me ajudar com isso?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.