Lentidão no windows XP

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Veja que Windows 98 existe em duas versões diferentes. Não lembro qual eu usava até a época em que mudei pro XP, mas sofri esse problema. Talvez em alguma versão o problema não se fazia notar facilmente. Se bem me lembro, no Windows 98 esse problema era realmente um pouco mais suave. Mas existia.

Leve em conta que a última versão da OSLib foi lançada em 98, quando era muito difícil encontrar o Windows NT em empresas pequenas. Aliás, aqui em Londrina nunca vi alguém usando o NT. Kernel NT mesmo só a partir de (+/-) 2002 com o Windows 2000. E a OsLIB tem uma função exatamente pra resolver essa lentidão, embora em algumas ocasiões ela não tenha funcionado pra mim. :)

Agora, o problema do Clipper que faz surgir essa lentidão está na forma como é feita a coleta de lixo, desfragmentação, etc. O manipulador de teclado, nos momentos de ociosidade do sistema, aproveita(ria) pra rodar o garbage collector, que não funciona como deveria. A idéia da FreeTSlice() é justamente fazer um gancho nesse manipulador e, no período de ociosidade, liberar o processador, emitindo uma interrupção de tempos em tempos. Daí a necessidade daquele delay. Então o processador volta a um nível mais aceitável de consumo, em repouso, na casa dos 2% ou menos ainda.

Inclusive, vale a nota: quem usa um artifício desses pra reduzir o consumo de CPU, deve ficar atento para acionar manualmente a coleta de lixo, já que o automático passa a ficar desligado. Faz-se isso com chamadas à função Memory(-1) em pontos estratégicos, como: retorno de funções que alocam matrizes, fechamento de arquivos e na saída de qualquer ponto em que houver um descarte de memória. Sem isso a fragmentação vai aumentar até o ponto de começar a ser feito swap em disco. Daí, lentidão de novo. A coisa fica minimizada em programas que utilizam o modo protegido, claro. Mas ainda assim, o swap é uma possibilidade.

Há tempos venho pensando em modificar a FreeTSlice() pra invocar a coleta de lixo de forma automática, pra que tudo fique como antes. Falta tempo pra mexer nisso. :[
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
jpalma
Usuário Nível 3
Usuário Nível 3
Mensagens: 153
Registrado em: 18 Ago 2003 14:15

Mensagem por jpalma »

Clipper

Desculpe discordar sobre sua afirmação que "desconhece o problema do bug do uso excessivo do processador por programas em clipper", tanto que no meu ultimo post faço menção sobre a utilização da referida biblioteca.
Em meus sistema tanto no win98/2000/xp, nunca necessitei utilizar a biblioteca.


grato pela ajuda
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

Maligno,

Esse recurso de memory(-1) é necessário também se meu sistema estiver em xharbour, pergunto isso pois utilizo muitas matrizes e desconhecia esse artifício do memory(-1)

Muito Obrigado
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Jpalma

Ainda não entendi.

Afinal você usa a Freetslice ou alguma função equivalente ou não ?

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Luciano Bonfim escreveu:Esse recurso de memory(-1) é necessário também se meu sistema estiver em xharbour, pergunto isso pois utilizo muitas matrizes e desconhecia esse artifício do memory(-1)
Programas 32 bits também podem sofrer com a falta de desfragmentação de memória, memory leaks, etc. Mas duvido que não tenham um sistema mais eficiente que o do Clipper. Só não posso dizer qualquer coisa com precisão porque não conheço o XHarbour a fundo. Mas eu não me preocuparia se fosse você. Não vimos qualquer notícia aqui no fórum de alguém tendo problema desse tipo.

Detalhe: o argumento -1 de Memory() não é documentado. Oficialmente, Memory() se presta apenas ao trabalho de informar.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

obrigado vou fazer uns testes aqui com o memory(-1) no xharbour e depois posto o que eu descobrir!!!
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Luciano Bonfim escreveu:obrigado vou fazer uns testes aqui com o memory(-1) no xharbour e depois posto o que eu descobrir!!!
Pode usar:

Código: Selecionar todos

HB_GCALL()
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Não lembrava dessa função. Mas pelas palavras do help "xHarbour's garbage collector is normally invoked automatically during idle states." não será necessário se preocupar em invocar essa função por sua conta.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder