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.
Na real era para o teste com List ser mais rápido pois seus métodos não são sincronizados! :?
E
eduardognz
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.