1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Eficiencia e rapidez vb6

Discussão em 'Programação' iniciada por RPortela, 18 de Outubro de 2006. (Respostas: 9; Visualizações: 806)

  1. RPortela

    RPortela Power Member

    boas,

    tou com uma duvida no vb 6,

    eu estou a fazr um programa para entregar amanha na empresa onde estou a estagiar, e tenho uma duvida,

    e axim, eu criei o programa e tal, e agora reparei que no fim de tudo criado (apesar d nao ter tido tempo para fazer tudo o que queria, isso e para melhorar mais tarde) notei que a aplicação esta um pouco "lenta" e tambem que muito do codigo se repetia,

    a minha duvida e a seguinte:
    se naquele codigo que se repete varias vezes, por vezes 3 e 4 vezs com varias linhas, o programa torna-se mais "rapido" se eu apagar tdo esse codigo, e no seu lugar criar uma função, e sempre que for necessario chamar essa função, k axam??

    eu ja sei k o vb nao e uma linguagem mt rapida e que o melhor e mudar po .net, ja sei disso, apenas preciso que me dem a vossa opiniao se eide criar as funções ou deixar tudo como esta.

    cumprimentos,
     
  2. _freelancer_

    _freelancer_ Power Member

    Bem, acho que antes de mais, se queres pessoal a ajudar-te neste fórum era boa ideia deixares de usar o "pituguês" do tipo "poxo" e "axim", mas adiante.

    É óbvio que se tens código que se repete é de todo o interesse usar funções, até porque imagina que mais tarde vens a descobrir que esse código tem um erro. Se usares funções, corriges o erro na função correspondente e automáticamente estás a corrigir o erro em todas as partes do programa que façam uso dessa função, ao passo de que se tiveres o mesmo código repetido 10x, irás ter de fazer essa alteração as 10x.

    Em termos de performance também tens ganhos. Carregares código redundante 10x para memória ou carregares 1x e teres 10 referências a essa função é muito mais eficaz e gasta menos recursos. :)

    Espero ter ajudado.
     
  3. ShadeX

    ShadeX Power Member

    Não necessáriamente. Inlining e loop unrolling são são precisamente dois tipo de optimização onde trocas ram e tamanho da app por performance. E obviamente, são optimizações para ganho de velocidade.

    Cada vez que chamas uma função acontece de tudo e mais alguma coisa dependendo do compilador/interpretador. E se alguns até são "modestos" há outros que fazem toda a cangalhada e mais alguma, inclusive muita ocasionalmente desnecessária.

    Obviamente, se a tua app passa de xMB para 100xMB, tens um problema, mas para apps de tamanho razoável, não é por ai que vai a performance. "Carregar" apps grandes só conta para o load time e quando estás apertado de RAM. Em outras situações, não perdes nada por ter uma app tamanho familiar.

    Obviamente, é mais fácil resolver probs numa app bem estruturada que numa coisa reminiscente de programas para o Spectrum...
     
  4. _freelancer_

    _freelancer_ Power Member

    Bem, eu não sei como funcionam os compiladores a um nível mais baixo mas acho que a forma ideal (e não sei até que ponto não será mesmo assim) seria que ao chamar uma função, ele vá à função, inicialize as variáveis que tem que inicializar, passa os parametros que tem de passar, corre o código da função e ao sair da função, descarrega-a de memória.

    Ao contrário de termos código repetido N vezes, onde cada vez que carregamos o bloco que contém esse código, estamos a, desnecessáriamente carregá-lo para memória (até em certos casos chega mesmo a ser inútil). Imaginem que o código está dentro de um if, que naquela iteração não validou, se fosse uma função, o código nunca chegaria a ser carregado, porém se ele lá estiver escarrapachado, é carregado por "simpatia".

    Penso eu de que, mais uma vez afirmo que não tenho a certeza quanto a isto.
     
  5. AwakE

    AwakE Banido

    Como já disseram o tamanho do programa só tem importancia se estiveres a estrangular a RAM do computador. Como acho pouco provavel que estejas a fazer uma aplicação em VB6 que ocupe 256 Mb de memória teres código repetido é irrelevante em termos de performance (até é ligeiramente mais rápido por causa da gestão de stack).
     
  6. RPortela

    RPortela Power Member

    boas,

    em primeiro lugar peço desculpa pelo "pituguês" de que o _freelancer_ falou, isso deveu-se ao habito do messenger e tambem ao facto de estar com pressa; este e um problema meu que tenho andado a tentar "resolver" e acreditem que ja estou muito melhor do que ha uns tempos atras.

    como ninguem respondeu em tempo útil (ontem) eu optei por criar as ditas funções porque me lembrei de que caso houvesse algum erro que tivesse de ser corrigido ou alguma alteração que tivesse que ser feita me facilitaria o trabalho, e tambem facilita no facto de quando tenho de "ver" o codigo, existe muito menos codigo e logo "perco-me" com menos facilidade.

    como foi tudo feito muito á pressa (na tarde de terça e quarta feira) porque eu tambem tenho aulas e o tempo infelizmente nao chega para tudo o que eu gostaria, já encontrei um pequeno erro, contudo já está corrigido, e foi-me muito mais facil corrigir apenas a função e não todo o codigo, pelo que ter criado funções já me facilitou a vida.

    so a titulo de curiosidade: a aplicação tem cerca de 10 megas :lol:, e o que pesa mais é ter varias imagens.

    Obrigado pela vossa ajuda,

    cumprimentos,
     
  7. MeY-ZiNG

    MeY-ZiNG Power Member

    não podes tirar as imagens do .exe principal e colocá-las num ficheiro (ou vários ficheiros) à parte para ires carregando à medida que são necessárias? Isso deveria melhorar a performance do programa, a não ser que estejas sempre a usar as imagens quase todas em simultâneo...
     
  8. _freelancer_

    _freelancer_ Power Member

    Isso se calhar depois acaba por convergir na ideia do AwakE, uma vez que o programa está tão pequeno, mais vale carregar logo tudo ao início e quando as imagens forem necessárias serem mostradas instantaneamente, do que cada vez que queres ver uma imagem tens de esperar que esta carregue ... ou então não :)
     
  9. MeY-ZiNG

    MeY-ZiNG Power Member

    pois... também não sei bem como funciona o compilador daquilo... mas se um programa tiver só o essencial e for suficientemente pequeno, mais facilmente as suas instrucções cabem todas na cache interna do CPU... ou não?
     
  10. ShadeX

    ShadeX Power Member

    É verdade sim, mas por norma só tens essas apps pequenas quando feitas em asm, em outros casos, já tens sorte quando funções suficientes cabem no cache simultaneamente.

    @porrtela

    Fizeste bem em "limpar" o código. Se a app está está "lenta" só tens dois casos possivéis. Ou a app está toda lenta, o que normalmente indica que tens um componente qqr a fazer isso, ou é lenta em situação x que se pode isolar. Se tiveres o primeiro caso, só te resta tentar descobri o que estás a usar na app que a deixa assim. Se fo o segundo, só tens de isolar o ponto do código onde isso acontece e tentar ver o que é.
     

Partilhar esta Página