Não posso afirmar com certeza, mas fiz o teste abaixo e a diferença não foi lá
grandes coisas.. pra falar a verdade, usando final foi até mais lento na maioria das
vezes. Tentei inverter a ordem do teste (primeiro sem final ) e o resultado não se
alterou.

Usei a Java HotSpot(TM) Client VM (build 1.3.0_01, mixed mode) para rodar os testes.
Acredito que a otimização varie de acordo com o tipo efabricante da JVM que você
estiver usando.

Eu geralmente uso final somente quando quero usar um argumento de método em uma inner
class anonima... fora isto praticamente nunca uso. Acho que só vale a pena usar se
você desenvolver aplicações matemáticas ou intensivas no uso de CPU.

import java.util.*;

public class FinalTest {

 public int fazX(Vector v) {
  int sum = 0;
  for (int i = 0; i < v.size(); i++) {
   sum += ((Integer)v.get(i)).intValue();
  }
  return sum;
 }

 public int fazXFinal(final Vector v) {
  int sum = 0;
  for (int i = 0; i < v.size(); i++) {
   sum += ((Integer)v.get(i)).intValue();
  }
  return sum;
 }

 public static void main(String args[]) {

  Vector data = new Vector(1000000);
  for (int i = 0; i < 1000000; i++) {
   data.add(new Integer(i));
  }

  FinalTest test = new FinalTest();

  long inicio = System.currentTimeMillis();
  for (int i = 0; i < 10; i++) {
   test.fazXFinal(data);
  }
  long fim = System.currentTimeMillis();
  System.out.println("Tempo usando final: "+ (fim-inicio) +"ms");
  System.gc();
  inicio = System.currentTimeMillis();
  for (int i = 0; i < 10; i++) {
   test.fazX(data);
  }
  fim = System.currentTimeMillis();
  System.out.println("Tempo sem usar final: "+ (fim-inicio) +"ms");
 }

}

....................................................
Leonardo Souza Mario Bueno
itera Informática
Voice, Wireless & Web Solutions
[EMAIL PROTECTED]
Phone: 55 27 337 0317
Cell: 55 27 9971 1375
Visit our website at:
http://www.itera.com.br
....................................................

----- Original Message -----
From: "Mister M" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, March 22, 2001 10:34 AM
Subject: final em lista de argumentos


> Ola pessoal,
>
> Alguem saberia me afirmar com certeza se o uso de final na lista de
> argumentos melhora a performance? Por exemplo, eu sei que em:
>
> public void fazX() {
>    final Vector v = new Vector();
> ...
> }
>
> pode vir realmente a permitir otimizacoes do compilador. Mas e:
>
> public void fazX(final Vector v) {
> ...
> }
>
> serah q melhora a performance???
> Tks anyway!
>
> []'s
>
> Michael Nascimento Santos
> Analista/Consultor
> CPM Sistemas - www.cpm.com.br
>
> _________________________________________________________________________
> Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
>
>



------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a