Boa tarde a todos,
Estou fazendo uma pesquisa sobre o custo de operacao de type cast, quanto custa de memória e processameto um cast.
Se alguem tem alguma opniao para ajudar
Boa tarde a todos,
Estou fazendo uma pesquisa sobre o custo de operacao de type cast, quanto custa de memória e processameto um cast.
Se alguem tem alguma opniao para ajudar
Só um detalhe. É muito difícil que uma operação de cast chegue a fazer cócegas em termos de performance, para praticamente QUALQUER aplicação. Existem gargalos muito mais importantes do que esse, e existem diversos tipos de otimização de compilador que reduzem o custo do casting para praticamente zero.
O custo de cast também varia. O downcast de um tipo primitivo geralmente é uma operação gratuita. Casts de objetos podem ser otimizados em grande parte das vezes.
Casts devem ser evitados por clareza, não por performance.
Só que um exemplo eu tenho uma lista pré java 5 com 100.000 mil registro para eu iterar sobre ela eu obrigatoriamente tenho que fazer cast, eu imaginei que isso realmente não faz efeito em uma app pequena mas tratando-se de uma app grande porte não surte efeito.
E por que você teria que fazer cast?
De qualquer forma, nem com 5.000.000 de registros você teria problema no cast.
Existem outras operações muitíssimo mais lentas que poderiam dar problema, como ler essa lista do banco ou de um arquivo, por exemplo.
Mesmo uma operação de conversão muito mais lenta, como converter de String para int (que não é um simples cast, mas uma conversão mesmo) dificilmente dá problema.
Li bastante sobre conversei com amigo no trabalho e cheguei a seguinte conclusão :
Tem custo SIM, porem tão insignificante como vc disse não faz nem cocegas em termos de performance.
A Classe Collections pós java 5 veio parametrizada apenas para clareza de codigo (Há controvérsias …rs).
Cara agradeço, sua opinião ajudou bastante,
Abraço.
Sim, eu também já havia dito que tinha custo. Apenas algumas operações de cast podem ser otimizadas pelo compilador e ficar sem custo, não todas.
Agora, como pode haver controvérsias na sintaxe de collections do Java 5? O único ponto que o código fica um pouco pior é na declaração. Todo o resto (que é o uso, muito mais itenso), fica sem casts. Isso é um ganho significativo de clareza.
Agora, não confundir casts com Auboxing e Autounboxing. Isso sim, tem custo, e considerável.
Integer x = 10; //Autoboxing. Equivale a escrever: Integer x = Integer.valueOf(10);
x++; //Equivale a escrever x = Integer.valueOf(x.intValue() + 1);
int y = 1 + x; //Equivale a escrever int y = 1 + x.intValue();
Perceba como uma operação de ++ ficou extremamente mais cara. Se você fizer diversas contas com boxing, você pode ter uma surpreza bastante desagradável na performance.
Eu não quis dizer que a controvérsias na sintaxe das collections, quando disse “Há controversias…” estava meio que ironizando o fato de que tem custo, mas que o mesmo é insignificante.