Notifications
Clear all

estimativa de performance

7 Posts
2 Usuários
0 Reactions
1,839 Visualizações
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

como o forum não tem uma area off topic para esse tipo de pergunta...

bem fiz uma macro de busca, comparação e contagem

para teste de performance
foi gerado todos os 34.220 ternos possíveis de 1 até 60
e foi contabilizado todos os 1707 jogos da mega que
tem 1 , 2, e as 3 dezenas do terno
foi contado cada dezena que saiu no mesmo sorteio que teve as 3 dezenas

ciclo minimo
34.220 * 1.707 * 6 * 3

minimo pq a cada terno encontrado exite um loop adicional de 6

office 2010 32b
cpu i3 3.4GHz
8Gb de memoria, mas no processamento não estava usando nem 3gb , eu estava usando a internet e tinha outra estancia do excel aberta que eu tinha esquecido de fechar.

inicio teste-->11:16:08
termino ----->11:25:14
esse tempo está legal ou ainda é muito demorado ?

o resultado é assim:

 
Postado : 25/05/2015 9:02 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Não costumo trabalhar com isso, mas acho que o tempo está bom.

Claro que tem-se que pensar em variáveis (velocidade do processador, se há outras aplicações abertas - como vc já mencionou). Também o VBA não é das linguagens mais rápidas.

Mas acho que a preocupação maior seria tentar otimizar o código (o que eu creio que vc já fez, pelo que acompanhei dos teu tópicos).

Outra coisa que eu considero importante: a frequência com a qual vc vai rodar o código. Nesse caso, creio que iria rodar apenas uma vez até preencher todos os sorteios, e depois só precisaria atualizar com o(s) último(s) sorteio(s). Não vejo problema nisso. Seria muito tempo se vc tivesse que rodar o código, digamos, a cada meia hora.

 
Postado : 25/05/2015 11:11 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

ola gtsalikis

realmente eu sou um maniaco de performance
o meu estilo de fazer as macros já contribui para isso
e como eu não tinha uma base de comparação eu não sabia se poderia ser melhorada a macro

como vc falou que está legal eu vou partir para as outras implementações

esse foi mais um teste simbólico, mesmo pq não sei a serventia para esse tipo de informação

o objetivo é fazer varias buscas menores para comparação

a macro tbm serve para buscar informações em um banco de dados,
onde eu acho que vai ter sua melhor utilização , ela tbm lista onde foi achado os resultados

ainda não sei que tipo de teste fazer para testar a eficacia da macro,
ou até se fosse o caso de loteria mesmo, tirar algum dado de importância estatística

 
Postado : 25/05/2015 11:41 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

eu falei que não seria um teste corriqueiro
mas acabei desdobrando as 25 dezenas da loto facil em sequencia de 5 dezenas
o pior que coloquei para analisar pela loto facil sem verificar quantas sequencias deram
já vai para 6 minutos rodando

eu não ia colocar formulas na planilhas, mas vou ter que colocar uma para informar condições de testes
como não sou bom em matemática não sei quantas sequencias foram geradas
9 minutos agora

 
Postado : 25/05/2015 2:50 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

acabei criando mais um post tipo diario :(

mas bem
considerando esse teste sem querer e desastroso que terminou as 18:28

levantei algumas considerações
eu uso arrays, mas os tipo de pega e cola na planilha e referenciáveis são do tipo variant

considerando o uso que vai se fazer da macro
se forem valores numericos como esses das loterias
se pode antes de jogar para o loop
transferir os dados para um outro array de tipo definido,
long
ou até byte para casos como os da loteria
isso diminuiria o tamanho da array
e talvez melhorasse o desempenho
pq com arrays de tipo byte se tem varios valores no mesmo endereçamento de memoria
e para se testar valores em sequencia não se pularia de endereçamento tão seguidamente

e no final do processo caso nessessario se colocaria de volta no array tipo variant para colar na planilha

oq vc acham? " se é que alguem está lendo isso..."

 
Postado : 25/05/2015 4:16 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

bem,
como eu já sabia
macros estruturalmente pequenas não são sinônimo de performance
isso depende muito do que se vai fazer

é muitas vezes melhor repetir o mesmo trecho da macro variando opções
do que ter uma macro comprimida cheia de opções embutida em um loop extenso

reduzir estruturas de componentes internos tbm ajuda na execução de grandes loops
no caso introduzir um loop de 1.700 *6 mais um de 34.220 *3
para passar as array variant para array byte

no meu caso o tempo total de processamento caiu de 9 minutos para quase 6 e isso incluído passar de volta para variante e colar na planilha

 
Postado : 27/05/2015 11:22 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

estou juntando um amontoado de função na planilha,
mas ainda sem uma definição de usabilidade

 
Postado : 28/05/2015 7:53 pm