Página 3 de 3
clipper 5.2b+exspace 1.0g x clipper 5.2e+blinker7
Enviado: 08 Fev 2017 15:21
por aprendiz_ce
José Quintas,
Acho que o link anterior deveria está com problemas pela manhã, pois ainda pouco consegui baixar o OS_Lib e também acessei todo o conteúdo do referido site.
Resultado do teste:
Inclui logo abaixo dos meus "SETs" do sistema, o OL_AutoYield(.T.) e nada mais... compilei e executei sem erro algum. Fiquei monitorando pelo "Gerenciador de Tarefas" e percebi que o uso da CPU com o sistema em STAND BY ficou oscilando entre 1 a 28% e que anterior mente já partia dos 55%. Seria isso mesmo, ou eu apliquei a OS_LIB de forma errada? Monitorei em alguns "LOOP" e "INDEX", mas não vi mudança muito expressiva se comparo sem o uso do OS_LIB.
clipper 5.2b+exspace 1.0g x clipper 5.2e+blinker7
Enviado: 08 Fev 2017 16:48
por JoséQuintas
Sim, isso mesmo.
O modo automático reduz aonde possivel, procurando não deixar lento nem o aplicativo e nem o Windows.
Pra melhorar mais, pode incluir chamadas a OL_Yield() em pontos estratégicos, aonde tem certeza que vai ficar aguardando.
Programas Windows também tem algo assim.
Só fazer um módulo de teste e vai ver a diferença.
Código: Selecionar todos
PROCEDURE Main
DO WHILE Inkey() != 27
OL_Yield()
ENDDO
RETURN
O consumo fica em ZERO.
clipper 5.2b+exspace 1.0g x clipper 5.2e+blinker7
Enviado: 08 Fev 2017 16:50
por JoséQuintas
Em bloqueios de registro:
E outros lugares mais.
Liberando tempo para o Windows, ele tem tempo de conversar com servidor, ler disco, gravar disco, bloquear, etc. etc.
clipper 5.2b+exspace 1.0g x clipper 5.2e+blinker7
Enviado: 09 Fev 2017 14:26
por aprendiz_ce
Boa tarde, Josè Quintas.
Ainda bem que eu acertei no uso da OS_LIB. Agora, com essas suas orientações finais, a coisa vai ficar melhor ainda. Confesso que fiquei surpreso com essa LIB, pois funciona mesmo e acaba dando um "Upgrade" no desempenho do EXE.
Muitíssimo obrigado pela sua colaboração.
Forte abraço!
P.S.: Notei que o EXE ficou com 1/3 do tamanho se comparado quando ele era compilado com Exospace. Muito bacana!
clipper 5.2b+exspace 1.0g x clipper 5.2e+blinker7
Enviado: 09 Fev 2017 18:33
por JoséQuintas
Mas e quanto ao problema de reindexação?
Ou no final tinha a ver com liberar tempo ao Windows?
clipper 5.2b+exspace 1.0g x clipper 5.2e+blinker7
Enviado: 11 Fev 2017 13:04
por aprendiz_ce
Olá Josè Quintas, bom dia.
Foi até bom você ter perguntado!
Para ser sincero, no momento está 100%. Mas acho que o conjunto das ações melhorou o desempenho desse ERP, e como isso, consegui que a indexação e o tempo de Windows ficassem a contento.
Comentário:
Notei uma coisa estranha. Quando usei o OS_LIB pela primeira vez e monitorei o uso de recursos do PC/CPU, percebi uma redução significativa, só que agora, ao refazer o mesmo monitoramento, o uso de recursos voltou aos 50%, e isso monitorando somente com o ERP em execução, nada além dele. O que pode ser? Quando inicio o monitorando o mesmo inicia em 1% e quando carrego o ERP o mesmo dispara para 50%.
Grato pela sua atenção e aguardo o seu comentário.
clipper 5.2b+exspace 1.0g x clipper 5.2e+blinker7
Enviado: 11 Fev 2017 22:38
por JoséQuintas
Esquisito. talvez dependa do momento.
Não custa confirmar se depois dos testes acabou deixando sem OL_AutoYield( .T. ) ... rs
Aqui notava que ao mexer no mouse, já causava mudança no consumo de CPU, seja Clipper ou Windows.
Ao carregar o EXE é normal, consome mais tempo no início, ou durante algum processo, pois está trabalhando.
Se usa mouse, superlib por exemplo, é bom colocar chamadas a OL_Yield() no DO WHILE de checar mouse.
Mouse e teclado são os "vilões" de 100% de CPU.
Eu cheguei a alterar minha GETSYS e aonde possível, substituindo Inkey() por MyInkey(), principalmente onde era infinito (ZERO) ou muito tempo.
Exemplo:
Código: Selecionar todos
FUNCTION MyInkey( nTempo )
LOCAL nKey := 0
IF nTempo == NIL
OL_Yield()
nKey := Inkey()
ELSEIF nTempo == 0
DO WHILE nKey == 0
nKey := Inkey()
OL_Yield()
ENDDO
ELSEIF nTempo > 0.3
DO WHILE nKey == 0 .AND. nTempo > 0
nKey := Inkey( 0.3 )
nTempo -= 0.3
ENDDO
ELSE
OL_Yield()
nKey := Inkey( nTempo )
ENDIF
RETURN nKey
clipper 5.2b+exspace 1.0g x clipper 5.2e+blinker7
Enviado: 14 Fev 2017 12:46
por aprendiz_ce
JoséQuintas escreveu:Esquisito. talvez dependa do momento.
Não custa confirmar se depois dos testes acabou deixando sem OL_AutoYield( .T. ) ... rs
Aqui notava que ao mexer no mouse, já causava mudança no consumo de CPU, seja Clipper ou Windows.
Ao carregar o EXE é normal, consome mais tempo no início, ou durante algum processo, pois está trabalhando.
Se usa mouse, superlib por exemplo, é bom colocar chamadas a OL_Yield() no DO WHILE de checar mouse.
Mouse e teclado são os "vilões" de 100% de CPU.
Eu cheguei a alterar minha GETSYS e aonde possível, substituindo Inkey() por MyInkey(), principalmente onde era infinito (ZERO) ou muito tempo.
Exemplo:
Código: Selecionar todos
FUNCTION MyInkey( nTempo )
LOCAL nKey := 0
IF nTempo == NIL
OL_Yield()
nKey := Inkey()
ELSEIF nTempo == 0
DO WHILE nKey == 0
nKey := Inkey()
OL_Yield()
ENDDO
ELSEIF nTempo > 0.3
DO WHILE nKey == 0 .AND. nTempo > 0
nKey := Inkey( 0.3 )
nTempo -= 0.3
ENDDO
ELSE
OL_Yield()
nKey := Inkey( nTempo )
ENDIF
RETURN nKey
Pois é, muito estranho!
Eu fiz o teste com o "OL_AutoYield( .T. )", e isso eu tenho certeza, pois conferi no fonte e compilei os PRGs logo em seguida.
Sobre o uso de mouse... eu não uso! Pra ser mais especifico, não uso nada além do próprio Clipper (puro). A única coisa que inclui de novo foi esse OS_LIB que passei a usar agora.