QTDE DE CARACTER DENTRO DA UMA STRING

HARRY.POTTER 04/12/2006 18:13:33
#187938
Apenas abri este tópico para fazer um comentário a respeito do tópico homà'nimo anterior.

Bem, uma solução encontrada foi usar o FOR. Porém o usuário que criou o tópico perguntou a respeito do tempo de processamento para dados maiores. Então disseram para usar o REPLACE, que foi a resposta escolhida. Porém eu fiz alguns testes e conclui que o bom e velho FOR é mais rápido que o REPLACE, ao contrário do que fica sugerido no outro tópico.

Vejam:

Dim Texto As String
Dim Tempo(1 To 2) As Double
Dim Letras(1 To 2) As Double

Open app.path & "    este.txt" For Binary As #1
Texto = UCase(Input(LOF(1), 1))
Close #1

Tempo(1) = Timer
For i = 1 To Len(Texto)
If Mid(Texto, i, 1) = "A" Then Letras(1) = Letras(1) + 1
Next
Tempo(1) = Timer - Tempo(1)

Tempo(2) = Timer
Letras(2) = Len(Texto) - Len(Replace(Texto, "A", ""))
Tempo(2) = Timer - Tempo(2)

MsgBox "O processo com o FOR demorou " & Tempo(1) & "s" & vbCrLf & "Já o processo com o REPLACE demorou " & Tempo(2) & "s", vbInformation, "Letras: " & Letras(1) & " // " & Letras(2)


(o arquivo que utilizei para os testes está em anexo)
CAIO.IN.DUST 06/12/2006 16:02:54
#188370
Caro HARRY POTTER terei que concordar com você, em um arquivo muito grande, o nosso for é mais rapido mesmo, mais o mesmo codigo seu com uma frase só "A ligeira raposa marrom ataca o cão preguiçoso." o Replace foi a mesmo coisa em alguns momentos e mais rapidos em outros... Sem alterar nada... so fiz teste sucessivos...
Então acho que o programador terá que saber qual a melhor solução para ele.

Até mais HARRY POTTER, e valeu pelo teste.
Tópico encerrado , respostas não são mais permitidas