List x Vector

4 respostas
E

Salve

Estou tendo um problema no meu sistema web.

Fiz um modulo duas vezes para comparar a velocidade dos dados, em retorna-los.
Em um caso eu usei o Vector e em outro caso eu utilizei o List com generics, e obtive melhor desempenho utilizando o Vector, alguem pode me explicar o por que.

valew

4 Respostas

thiago.correa

Na real era para o teste com List ser mais rápido pois seus métodos não são sincronizados! :?

E

concordo plenamento com vc !

Nao entendi mto !

victorwss

Ou seja, comparar List com Vector é algo sem sentido, uma vez que Vector implementa List.
Comparar Vector com LinkedList ou Vector com ArrayList faz mais sentido.

Por sinal, o synchronized tem um certo custo de desempenho na checagem do lock.
MAS… JVMs modernas (1.4 para cima) usam vários truques para tentar diminuir esse custo. Thread spinning*, análise de confinamento de objeto em uma thread, análise e eliminação de locks desnecessários entre várias outras otimizações agressivas da JVM fazem com que o custo da sincronização seja reduzido ou até mesmo completamente eliminado de muitos lugares, e isso obviamente afeta programas de benchmarking.

  • Thread spinning = Ao invés de bloquear a thread quanto ela tenta adquirir um monitor pertencente a outra thread, o que faria com que houvesse troca de contexto no sistema operacional, mudança do estado da thread para blocked e depois runnable e futura competição pelo uso da CPU, a JVM simplesmente faz ele desperdiçar alguns poucos ciclos de CPU em um loop e tentar adquirir o monitor novamente, isso melhora bastante o desempenho no caso de blocos sincronizados curtos que sejam executados muito rapidamente, mas disputados por muitas Threads.
aleck

Gosto muito da explicação do Vini neste post sobre o uso de Vector: http://www.guj.com.br/posts/list/71926.java#378301

Criado 26 de novembro de 2008
Ultima resposta 27 de nov. de 2008
Respostas 4
Participantes 4