MELHORAR O USO DE MEMORIA
Galerinha VBmanÃaca...
Estou com certos problemas, que não é de hoje...Mas como vou começar a desenvolver um projeto mais robusto agora,
resolvi [Ô]investigar[Ô] o que pode ser feito a respeito....O problema é o seguinte, muitas das aplicações que crio, acho que
utilizam mais memória do que deveria e não acho isso muito agradável...Já pensei que isso seria por causa das declara-
ções de variáveis ou algo do tipo, mas já fiz um [Ô]Projeto-teste[Ô] revisando todas as variáveis para ver se eu estava exage-
rando em alguma parte, mas não...Seria essa uma própria caracterÃstica da linguagem, por causa do Framework?
Ou o pessoal tem algum método, dica, etc...Para melhorar esse problema...?
Agradeço a ajuda de todos....
Estou com certos problemas, que não é de hoje...Mas como vou começar a desenvolver um projeto mais robusto agora,
resolvi [Ô]investigar[Ô] o que pode ser feito a respeito....O problema é o seguinte, muitas das aplicações que crio, acho que
utilizam mais memória do que deveria e não acho isso muito agradável...Já pensei que isso seria por causa das declara-
ções de variáveis ou algo do tipo, mas já fiz um [Ô]Projeto-teste[Ô] revisando todas as variáveis para ver se eu estava exage-
rando em alguma parte, mas não...Seria essa uma própria caracterÃstica da linguagem, por causa do Framework?
Ou o pessoal tem algum método, dica, etc...Para melhorar esse problema...?
Agradeço a ajuda de todos....
Uma coisa que notei que as vezes se torna vilão em aplicações que descobri em um programa que desenvolvir era o stringbuilder. O que acontecia, como eu tinha uma consulta que eu precisava montar de modo dinâmico e quando eu comecei a fazer testes de carga, o programa começou a devorar a memória do programa. Após alterar o programa para usar variável concatenável, o consumo de memória ficou menor e mais estável.
Outra coisa, não tente carregar um datataset de uma vez (principalmente uma carga grande de dados do banco), depois não descarregar ele da memória, isso também detona a memória.
Outra coisa, não tente carregar um datataset de uma vez (principalmente uma carga grande de dados do banco), depois não descarregar ele da memória, isso também detona a memória.
No Projeto Restaurante.NET o Luis havia passado essa dica de concatenação... E fui conferir para ver a diferença...
Realmente dá uma diferença gigantesca...Usando a concatenação StringBuilder levou 3 MiliSegundos, já com a concatenação comum (&) levou 50 Segundos.é uma diferença realmente considerável. Muito boa dica.
DICA - Otimização de Concatenação com Strings (muito mais rápido)
Sub ConfereConcatenacao()
Dim Tempo As New Stopwatch
Dim ts As TimeSpan
Dim s As String = [Ô][Ô]
Dim sb1 As New System.Text.StringBuilder
[ô] #####
MsgBox([Ô]Iniciando concatenação stringbuilder[Ô])
Tempo.Start()
For i As Integer = 0 To 100000
sb1.Append(i.ToString).Append([Ô] [Ô])
Next
Tempo.Stop()
ts = Tempo.Elapsed
MsgBox(String.Format([Ô]{0:00}:{1:00}:{2:00}.{3:00}[Ô], ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10))
Tempo.Reset()
[ô] #####
MsgBox([Ô]Iniciando concatenação comum com (&)[Ô])
Tempo.Start()
For i As Integer = 0 To 100000
s &= i.ToString & [Ô] [Ô]
Next
Tempo.Stop()
ts = Tempo.Elapsed
MsgBox(String.Format([Ô]{0:00}:{1:00}:{2:00}.{3:00}[Ô], ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10))
[ô] #####
MsgBox([Ô]Terminou[Ô])
End Sub
Realmente dá uma diferença gigantesca...Usando a concatenação StringBuilder levou 3 MiliSegundos, já com a concatenação comum (&) levou 50 Segundos.é uma diferença realmente considerável. Muito boa dica.
DICA - Otimização de Concatenação com Strings (muito mais rápido)
Sub ConfereConcatenacao()
Dim Tempo As New Stopwatch
Dim ts As TimeSpan
Dim s As String = [Ô][Ô]
Dim sb1 As New System.Text.StringBuilder
[ô] #####
MsgBox([Ô]Iniciando concatenação stringbuilder[Ô])
Tempo.Start()
For i As Integer = 0 To 100000
sb1.Append(i.ToString).Append([Ô] [Ô])
Next
Tempo.Stop()
ts = Tempo.Elapsed
MsgBox(String.Format([Ô]{0:00}:{1:00}:{2:00}.{3:00}[Ô], ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10))
Tempo.Reset()
[ô] #####
MsgBox([Ô]Iniciando concatenação comum com (&)[Ô])
Tempo.Start()
For i As Integer = 0 To 100000
s &= i.ToString & [Ô] [Ô]
Next
Tempo.Stop()
ts = Tempo.Elapsed
MsgBox(String.Format([Ô]{0:00}:{1:00}:{2:00}.{3:00}[Ô], ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10))
[ô] #####
MsgBox([Ô]Terminou[Ô])
End Sub
NETMANIA...
Obrigado pela dica...A parte do banco de dados eu já tenho esse costume, não tenho problemas nessa parte...
Mas já a parte de usar variáveis concatenáveis não sabia...Vou olhar mais sobre e começar a implantar...
JONATHANSTECKER
Poxa, que diferença hein...Não tive tempo para testar o código que me mostrou...
Mas vou dar uma olhada assim que puder...Obrigado também pela dica...
Se alguém mais souber de alguma coisa, o tópico está aberto...
Abraços...
Obrigado pela dica...A parte do banco de dados eu já tenho esse costume, não tenho problemas nessa parte...
Mas já a parte de usar variáveis concatenáveis não sabia...Vou olhar mais sobre e começar a implantar...
JONATHANSTECKER
Poxa, que diferença hein...Não tive tempo para testar o código que me mostrou...
Mas vou dar uma olhada assim que puder...Obrigado também pela dica...
Se alguém mais souber de alguma coisa, o tópico está aberto...
Abraços...
é Galerinha...
Testei as dicas e realmente há uma melhora considerável, gostei da utilização
das variáveis concatenáveis...Dá muita diferença...
Outra dúvida que surgiu foi: A utilização de Dll[ô]s ajuda na redução do uso da memória?
Utilizando Dll[ô]s, elas afetam de que forma o desempenho?
Se alguém souber algo sobre, gostarÃa de saber também...
Testei as dicas e realmente há uma melhora considerável, gostei da utilização
das variáveis concatenáveis...Dá muita diferença...
Outra dúvida que surgiu foi: A utilização de Dll[ô]s ajuda na redução do uso da memória?
Utilizando Dll[ô]s, elas afetam de que forma o desempenho?
Se alguém souber algo sobre, gostarÃa de saber também...
Encerrando o tópico...
Obrigado Netmania e Jonathanstecker, me ajudaram bastante...
Obrigado Netmania e Jonathanstecker, me ajudaram bastante...
Tópico encerrado , respostas não são mais permitidas