GURUS - OTIMIZACAO DE CODIGO

USUARIO.EXCLUIDOS 14/01/2005 10:01:46
#60683


Olá galera, criei este tópico para que alguns Usuários, como eu, tenham algumas dicas de alguns Feras em VB, com relação a Otimização de Código, algumas dicas para Usuário iniciantes e intermediários voltadas ao melhoramento/versatilidade/praticidade do Código.
Recentemente postei uma dica que peguei em um site de VB sobre otimização ( Dicas - tem algumas interessantes) mas é lógico que elas não se compara a \\\\\\\"Anos\\\\\\\" que programação e prática que alguns Feras em VB tem, [txt-color=#000080] Não estou pedindo que nos dê de mão beijada, todo o conhecimento que adquiriram com suor e dinheiro, [/txt-color] Estou pedindo uma Breve luz sobre o assunto!

[txt-color=#008000] Conto com a ajuda de vocês: [/txt-color]


[txt-color=#ff0000] Webmaster, Max, O Fiscal , Kpellajr, Bruno Machado, Caspereark, Professor, Jobasaint, Flavio Paganini, Fgsantos, Jose.niz, Lcsd, Paulohsv, Renato Mattos, Vb6master, [/txt-color] Dentre outros é claro...

[txt-color=#000080][txt-size=3]Quais as dicas de otimização de código que vocês podem nos dar?[/txt-size][/txt-color]
JB207 14/01/2005 10:47:20
#60691
Sendo pra melhor todas as dicas serão bem vindas.
[S67]
USUARIO.EXCLUIDOS 14/01/2005 11:29:21
#60698
Concordo, espero a contribuição de todos neste tópico.
Aguardo os Gurus...
USUARIO.EXCLUIDOS 14/01/2005 11:30:20
#60699
Mandando a primeira "Regra de Ouro"

[txt-size=3]"FAÇA SEUS PRÓ“PRIOS TESTE DE PERFORMANCE"[/txt-size]

Principalmente no acesso a dados, onde os testes preliminares começam com um BD praticamente vazio, devemos nos preocupar com os tempos para pesquisa com o aplicativo já a pleno vapor no cliente. A gente ouve bastante coisa, muita opinião "técnica", mas nada como fazer uma bancadinha de testes. Tenho um projeto só pra isso (pra testar a velocidade de funções e de objetos), e uso a classe PerformanceTimer, que é excelente pra medir pequenos lapsos de tempo

Citação:

Option Explicit

Public Enum PerformanceValue
pvSecond = 1 's
pvDeciSecond = 10 'ds
pvCentiSecond = 100 'cs
pvMilliSecond = 1000 'ms
pvMicroSecond = 1000000 'µs
pvNanoSecond = 1000000000 'ns
End Enum

Private m_CountsPerSecond As Currency
Private m_Start As Currency
Private m_Stop As Currency
Private m_ApiOverhead As Currency

Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long

Private Sub Class_Initialize()
'Does the system support a performance counter
If QueryPerformanceFrequency(m_CountsPerSecond) Then
Dim i As Long, TotalOverhead As Currency

'Find out how long it takes the system to call the API function
For i = 1 To 1000
QueryPerformanceCounter m_Start
QueryPerformanceCounter m_Stop
TotalOverhead = TotalOverhead + m_Stop - m_Start
Next i
m_ApiOverhead = TotalOverhead / 1000
Else
m_CountsPerSecond = 1
End If
m_Start = 0
m_Stop = 0
End Sub

Public Property Get Supported() As Boolean
'Does the system support a performance counter
Supported = QueryPerformanceCounter(0)
End Property

Public Sub StartTimer()
'Get the start time
QueryPerformanceCounter m_Start
m_Stop = 0
End Sub

Public Sub StopTimer()
'Get the end time
QueryPerformanceCounter m_Stop
End Sub

Public Property Get TimeElapsed(ByVal ReturnAccuracy As PerformanceValue) As Double
'Return the time taken
If m_Start And m_Stop Then TimeElapsed = (m_Stop - m_Start - m_ApiOverhead) / m_CountsPerSecond * ReturnAccuracy
End Property



Não confie em seus instintos! Coloque as funções a serem comparadas na bancada, ponha o starttimer e o stoptimer nos locais adequados e rode!
USUARIO.EXCLUIDOS 14/01/2005 11:49:36
#60706
Gostei da idéia do MAX,

Poderia descrever melhor como usar esse módulo PerformanceTimer, dando um exemplo de como poderia usá-lo para retornar o tempo de uma query ou algo assim? As funções de Start e Stop, onde as coloco?

USUARIO.EXCLUIDOS 14/01/2005 12:04:50
#60707
existe também erros clássicos de performance...

por exemplo:

for i = 0 to 10000

teste = i + 100

[txt-color=#ff0000]if len(textbox1.text) = 0 then
textbox1.backcolor = vbred
else
set rs = db.openrecordset("select nome from banco")
textbox1.text = rs("nome")
rs.close
endif[/txt-color]
listbox1.additem teste
next i

nao é incomum ver códigos dentro de loops que não usam nada do loop...
ou seja - a informação é executada n vezes por bobeira...
e se tiver acesso a bd fica mais lento ainda...

PAULOHSV 14/01/2005 12:13:49
#60709
GERMANIR acho que a principal atitude a ser tomada começa antes do proprio desenvolvimento, da parte de codigos.
Começa com uma analise bem feita do sera o projeto. Apos esta analise ai sim começar a pensar no que desenvolver, como desenvolver, vai rodar em rede, quais recursos vou usar, etc... Pois a escolha errada pode atrapalhar todo o seu projeto ai nem as melhores dicas de otimização nem os melhores codigos irão fazer o seu projeto funcionar bem .
No mais é como o Max falou so testando vc que vc vai ter uma ideia de como o seu projeto esta.

Esta é a minha opinião e o que eu sempre procuro seguir.
USUARIO.EXCLUIDOS 14/01/2005 12:18:50
#60711
Muito interessante este tópico mesmo !!!! Para mim q sou principiante dicas como essas de performance entre outras dicas são muito bem vindas !!!! Espero q os Gurus, Experts colaborem !!!!! Abs.

Oks,
Rafael Portal
USUARIO.EXCLUIDOS 14/01/2005 12:20:01
#60712
GOSTEI DESSA BRUNO! HAHA acho que já cometi tais erros...
agola outr a pergunta
eu costumo declarar a dimensão das variáveis em command buttons, timers, e eventos comuns isso é errado?

Private sub atualizar_click(Cancel as Integer)
dim valor as integer
dim vetor(5) as string
dim base as long
dim base = 2,2
dim valor = 15

for i = 0 to 5
vetor(i) = base * valor
next i

...

end sub

o tbn ATUALIZAR é utilizado com frequencia, toda vez que ele for clicado, as variáveis são declaradas novamente? isso pode gerar algum pau no meu prog?
devo declarar sempre em Declarations ?
(Aguardo uma resposta técnica)
valeu
PAULOHSV 14/01/2005 12:46:10
#60715
Para quem estiver afim de algumas dicas sobre otimização de uma olhada neste link, la tem algumas dicas sobre otimização.

http://www.bufaloinfo.com.br/alldicas.asp?codcat=2
USUARIO.EXCLUIDOS 14/01/2005 14:02:55
#60725
Boa!!! Bruno!! Massa!!
Será que algum Moderador do Fórum Poderia colocar este tópico no Topo (Oficial) Só por alguns Dias, estou empolgado com o desempenho do post, e gostaria de deixar ele mais dias...
Página 1 de 7 [69 registro(s)]
Tópico encerrado , respostas não são mais permitidas