Я пробовал разные комбинации для сравнения строк ( код здесь ):
1. s1.equals(s2)
2. s1.length() == s2.length() && s1.hashCode() == s2.hashCode() && s1.equals(s2)
3. s1.hashCode() == s2.hashCode() && s1.equals(s2);
4. s1.length() == s2.length() && s1.equals(s2);
Я использовал строки длиной 40 символов, в итерациях 10000000000L и перед любой итерацией я заново инициализировал строки.
за равные укусы я получил:
equal: 2873 milis ???
equal: 21386 milis
equal: 7181 milis
equal: 2710 milis ???
для строк того же размера, но последний разный символ, который я получил:
different: 3011 milis
different: 23415 milis
different: 6924 milis
different: 2791 milis
для разных размеров, почти одинаковые строки, но в конце добавлен один символ для s2:
different size: 3167 milis
different size: 5188 milis
different size: 6902 milis
different size: 2951 milis
мне кажется, что лучше использовать сначала сравнение string.length (), прежде чем equals ().
Но это почти не будет иметь значения, потому что это тот случай, когда у меня есть 10 ^ 10 строк сравнения с длиной 40 символов, и что странно для меня, это случай, когда для равных строк у меня лучше скорость при сравнении Длина строки первая.