A um tempo atrás Fábio Marcon Pallini, vulgo dolly da IBm, se propôs a fazer um código que testasse a eficiência de comparação de Strings entre três métodos do Java.
- java.lang.String.intern(void)::String
- java.lang.Object.equals(Object)::boolean
- java.lang.Object.compareTo(Object)::int
O código encontra-se neste link:
http://phpfi.com/331388
Foi usado como arquivo de entrada a bíblia que está em http://www.gutenberg.org/ebooks/10
1.34 Mb .zip
O resultado foi surpreendente:
Texto lido. 392429 palavras carregadas.
Fazendo comparacao com a palavra: God.
Inicio das comparacoes:
.intern() == : 329 milissegundos.
.equals(String) : 15 milissegundos.
.compareTo(String) == 0 : 0 milissegundos
Incrível e triste ao mesmo tempo.
O intern() foi o pior resultado. O James Gosling disse o contrário.
Contudo, eu vejo que esse método joga a String para o pool, e realmente é mais barato comparar referência de memória do que byte a byte da String, contudo, a comparação que ocorre no pool é que deve deixar lento. Talvez, seja isto que ele quis dizer.
Agradecimentos a Fábio Marcon Pallini.
Passed in SCBCD 5 exam
Há 14 anos
4 comentários:
Vc é rápido em Caião! ;-)
Eu li seu scrap hj demanhã e como tava a toa msm mandei bala no código. Espero q os resultados não sejam culpa de algum erro de código meu! heehehe
Mas então cara, se viu q estranho, testei com diversas palavras como te disse no email: keep, and, of. Em todas um resultado semelhante, compareTo é o bixo! hauhauha
Também estava a toa, heehehehe, por isso que foi rápido.
Está certo seu código, compareTo é o bixo msm, hahahahha
Caioo! Td bem???
Não entendi nadaa... rs! Mas o site é bonitinhoo! Rs!
Boa sorte sempree e felicidade!
bjaoo
Obrigado Camila!!
Postar um comentário