DESEMPENHO E MEMORIA COM OCX

EPISCOPAL 04/04/2013 18:42:53
#421533
Olá pessoal .......
Eu estive lendo uns artigos do Mestre Macoratti e vi que ele disse que se eu for usa o Microsoft Windows Commons Controls 6.0 só para usar um controle (imagelist por exemplo) era melhor utilizar um controle de terceiro free .... ele disse que o commons control tem 1,3 megabytes e se eu utilizar um controle de terceiro eu ganharia um bytes a menos na memoria .....

Eu gostaria de saber se pela experiencia de voces esta afirmativa e verdadeira, não quero disfazer da opniao do Macoratti, eu nem tenho cultura pra isso.

Minha dúvida e a seguinte, eu tenho diversos controles e quero fazer uma suite em apenas uma OCX. mas segundo eu disse a pouco isso gastaria muito memoria, ou era melhor criar uma ocx por controle????
OCELOT 04/04/2013 19:04:45
#421534
Tem que ver que existem muitos artigos do Macoratti que são bem antigos, antigamente 1.3mb a mais para ser carregado poderia deixar o programa mais lento para iniciar, o como RAM era escassa isso também poderia ser um problema.

Hoje em dia onde os PCs mais simples são mais rápidos do que os melhores PCs de antigamente então acho que isso já não é mais problema
WEBMASTER 04/04/2013 19:34:29
#421535
Resposta escolhida
Ele está se referindo aos componentes do VB Accelerator provavelmente.
Veja bem, ganhar em MB não deve ser sua unica medida, compatibilidade principalmente é o que voce deve procurar e os commom controls são extremamente compatíveis com o Windows (ja que sao da propria M$).
Eu prefiro pensar no fornecedor do que no tamanho da ocx, e nas consequencias do uso.
EPISCOPAL 05/04/2013 18:33:25
#421582
eu acho que expliquei mal ...

Vamos dizer que eu tenho uma OCX (5 MGb) e nele contem 5 controles. Segundo Macoratti se eu fazer referencia a esta OCX e utilizar apenas um controle, eu estarei utilizando os 5 mega a toa, pois eu poderia utilizar uma ocx de terceiro com apenas um controle (o controle que eu preciso, somente).

Citação:

Eu prefiro pensar no fornecedor do que no tamanho da ocx, e nas consequencias do uso.


Eu concordo com vc webmaster .... porem eu disse que eu tenho o codigo aberto, já testei desde o win xp até o win 7, e bem possivel que funcione no win8 tambem ..... pois este usercontrol que eu tenho utiliza apenas controles basicos da toolbar da IDE do vb6 ... funcionando sem problemas


Minha duvida é que eu queria compilar todos os usercontrol em apenas uma OCX, mas novamente digo que o macoratti diz que ficaria muito pesado ..... mas eu discordo, eu acho que a memoria aumenta de acordo com a quantidade de controles inseridos no formulario .... e nao na referencia a OCX.
WEBMASTER 06/04/2013 12:51:13
#421607
Sim, mesmo usando 1 de 5, você leva 5mb necessariamente.
Isso é fato !
Se você tem o source dos componentes, não compile, mande junto com teu programa em .CTL que vale mais a pena (evitando registros de componentes via regsvr32).
O raciocionio do Macoratti de forma alguma esta errado, mas cabe julgar o que e melhor.
OCELOT 06/04/2013 16:43:19
#421612
Você tem que ver que qualquer componente precisa ser mapeado em memória, então se ele tem 5mb ele vai usar 5mb de memória só para carregar a dll/ocx, e ainda vai usar mais o necessário para cada componente que foi adicionado no form, mas isso geralmente é bem pouco, em muitos casos não chega a 1kb por componente adicionado.

Só que não necessariamente ele vai ficar usando isso o tempo todo na RAM, o Windows pode decidir colocar parte do seu programa no arquivo de paginação por não estar sendo usado, os endereços de memória usados por aqueles 5mb vão ficar ocupados em seu programa, porém como no Windows (de 32 bits) cada programa tem um espaço virtual de 4gb, sendo 2 deles disponível para ser usado pelo programa, estes 5mb vão estar sempre contando como usados nesses seus 2gb virtuais, porém não necessariamente eles estarão usando a RAM.

E como eu disse antes, os PCs de hoje em dia são potentes o suficiente para isso não ser um problema, ficar se preocupando em otimizações antes mesmo de saber se vai ser um problema é perda de tempo, ainda mais quando se trata apenas de uso de memória, 5mb hoje em dia não é nada.
EPISCOPAL 09/04/2013 14:24:55
#421689
Bom eu fiz um teste aqui .... criei uma ocx com tres componentes precisamente iguais(2 textbox, 1 picturebox com uma imagem)

Inseri os tres controles no form e compilei o projeto .... ele usou + - 3 mg de memoria segundo o gerenciador de tarefas do windows ...

depois criei tres ocx e cada ocx tem o mesmo controle citado acima. Depois criei um novo projeto e referenciei as tres ocx e inseri os controles de cada ocx .... e compilei o projeto ... depois eu vi usando a sistematica acima, e vi que o EXE usava as mesma 3 mg de memoria ..... NÃO QUERO DESFAZER A TEORIA DE NINGUEM MAS NESTE EXEMPLO NAO VI DIFERENÇA EM MEGABYTES ... E PERCEBI QUE A MEMORIA AUMENTA DE ACORDO COM O NUMERO DE CONTROLES QUE SÃO INSERIDOS NOS FORMS ... digo isto por estes simples exemplo, mas lembro aos colegas vbmaniacos que sou apenas um curioso em vb e nao um expert em excelencia como macoratti e nosso amigo webmaster .....
EPISCOPAL 09/04/2013 14:29:35
#421690
Citação:

Se você tem o source dos componentes, não compile, mande junto com teu programa em .CTL que vale mais a pena (evitando registros de componentes via regsvr32)



Mais uma vez concordo com vc, maaaaaaas o problema e que eu queria enxugar o código, criando a OCX para distribuir junto a aplicação.

Como disse eu tenho uma suite de usercontrol pra vários tipos de funções .... se eu colocar em meu projeto vai ficar [Ô]muito cheio[Ô] entende??? por isso abri o topico, pois eu acho que vou usar uns 60% dos controles .......
EPISCOPAL 09/04/2013 14:38:41
#421691
Citação:

Você tem que ver que qualquer componente precisa ser mapeado em memória, então se ele tem 5mb ele vai usar 5mb de memória só para carregar a dll/ocx, e ainda vai usar mais o necessário para cada componente que foi adicionado no form



Como disse acima, eu vi pelo gerenciador de tarefas que isso não é bem assim ........ mas com DLL ai eu concordo com vc .... mas OCX não concordo ... via o exemplo que eu fiz ...



Citação:

E como eu disse antes, os PCs de hoje em dia são potentes o suficiente para isso não ser um problema, ficar se preocupando em otimizações



Enquanto a isto, meu amigo, na minha opnião vai de cada programador pois eu preocupo com memoria, velocidade, tamanho do EXE etc ... como diz o principio da OOP eu gosto de reutilizar o codigo e evito duplicidade de funções ....

Ja criei programas ... que depois de alguns dias fui fazer revisão de codigo e percebi que eu fiz uma função de mais ou menos 7 linhas e enxerguei que minha função poderia mudar para uma ..... eu tava cego qdo fiz errado ...



Mas o assunto é OCX ....... mais alguem tem algum conselho???? cadê o asktchap???
Tópico encerrado , respostas não são mais permitidas