O que é mais performático ao comparar Strings que você sabe que o tamanho será sempre um?

4 respostas
pgioseffi

Eu tenho uma String retornada do banco de dados que sempre terá tamanho igual a um.

Esta seqüência pode ser igual a "0", "1", "S", "N" ou nulo, que na verdade é uma constraint no banco de dados que eu não estou autorizado a substituir por causa de fins de registro.

Considerando que os valores de "S" ou "N" são maiúsculas ou minúsculas, o que é mais performático?
public boolean IsTrue {
    return this.str = null && (this.str.equals ("1") || this.str.equalsIgnoreCase ("S"));
}
ou
public boolean IsTrue {
    if (this.str ! = null) {
         final char caracter = this.str.charAt(0);
         return caracter == '1' || caracter == 'S' || caracter == 's';
     }
     return false;
}
PS: Por favor, não considerem o nome dos métodos, campos e variáveis.

4 Respostas

Hebert_Coelho

Pq vc não faz um for 0 —> 100000 e vê a diferença de tempo? [=

Ruttmann

Acho que a performance nesse caso teria uma diferença irrisória(a não ser que sua máquina tenha um AMD K6) :stuck_out_tongue:

Eu iria de primeiro caso, economiza linhas de código, fica bem mais elegante.

O segundo caso, ao meu ver, acaba custando o mesmo que o primeiro, visto as conversões que são feitas.

Enfim, acho que se existem métodos pra manipular esse valor como String, vamos aproveitá-los em prol da legibilidade do código. :wink:

pgioseffi

Herbert,

Vou tentar fazer esse benchmarking “manual”.

Ruttman,

Prefiro o primeiro código mesmo não questão de legibilidade também, mas queria mesmo saber sobre a performance.

pgioseffi

Pra quem quiser ver outras respostas:

http://stackoverflow.com/questions/19544896/whats-more-performatic-when-comparing-strings-that-you-know-the-length-will-alw

Criado 23 de outubro de 2013
Ultima resposta 23 de out. de 2013
Respostas 4
Participantes 3